Python 使用socks.set_default_proxy() 设置SOCKS代理的方法

socks.set_default_proxy() 通常用于Python中配置默认的SOCKS代理以进行网络操作。socks库允许通过SOCKS代理服务器路由网络流量,以提高隐私和安全性。本文主要介绍Python 中使用socks.set_default_proxy() 设置代理的方法。

1、 安装引用PySocks

PySocks 是一个 Python 库,支持在 Python 脚本或应用程序中使用 SOCKS 代理(SOCKS4、SOCKS4a 和 SOCKS5)。

pip install PySocks

2、单线程中设置SOCKS代理

import socks

# 配置默认的SOCKS代理
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 代理端口)

# 现在,所有的网络操作将使用配置的SOCKS代理
# 例如,您可以使用requests库与SOCKS代理进行如下操作:
import requests

response = requests.get("https://example.com")
print(response.text)

# 在完成后不要忘记关闭代理
socks.close()

如不使用socks.set_default_proxy()代理,还可以在requests中使用proxies指定代理,代码如下,

import requests

# 代理服务器的地址和端口
proxy_host = '127.0.0.1'
proxy_port = 8080

# 目标网址
url = 'https://www.baidu.com'

# 代理服务器的认证信息(如果需要)
# proxy_auth = ('代理用户名', '代理密码')

# 创建一个代理字典
proxies = {
    'http': f'http://{proxy_host}:{proxy_port}',
    'https': f'https://{proxy_host}:{proxy_port}'
}

# 发送请求
response = requests.get(url, proxies=proxies)

# 输出响应内容
print(response.text)

3、多线程中设置SOCKS代理

import socks
import threading

# 设置代理信息
proxy_host = "127.0.0.1"
proxy_port = 8080

def set_proxy():
    # 在每个线程中设置代理
    socks.set_default_proxy(socks.SOCKS5, proxy_host, proxy_port)
    socket.socket = socks.socksocket  # 将socket模块替换为socks模块

def your_thread_function():
    # 在线程内调用set_proxy以设置代理
    set_proxy()
    
    # 在这里执行你的多线程任务

# 创建多个线程
threads = []
for i in range(5):  # 创建5个线程,你可以根据需要修改数量
    thread = threading.Thread(target=your_thread_function)
    threads.append(thread)
    thread.start()

# 等待所有线程完成
for thread in threads:
    thread.join()

4、多进程中设置SOCKS代理

import socks
import socket
from multiprocessing import Process

# 代理服务器的地址和端口
proxy_host = '127.0.0.1'
proxy_port = 8080

# 设置默认代理
def set_default_proxy():
    socks.set_default_proxy(socks.SOCKS5, proxy_host, proxy_port)
    socket.socket = socks.socksocket

# 目标网址
url = 'https://www.baidu.com'

# 创建多个进程
num_processes = 4

def worker_process():
    # 在每个进程中设置默认代理
    set_default_proxy()
    
    # 发送请求
    import requests
    response = requests.get(url)
    
    # 输出响应内容
    print(response.text)

processes = []

for _ in range(num_processes):
    process = Process(target=worker_process)
    processes.append(process)
    process.start()

for process in processes:
    process.join()

推荐阅读
cjavapy编程之路首页