python程序使用全局替换套接字
代码示例
- socks5是本地dns解析
python
# 导入 PySocks 库中的 socks 模块和标准库 socket 模块
import socks
import socket
# 设置默认代理为 SOCKS5,本地DNS解析
socks.setdefaultproxy(socks.SOCKS5, "127.0.0.1", 10808)
# 将Python的socket替换为PySocks的socksocket
socket.socket = socks.socksocket
- socks5h是在远端机器上dns解析
shell
# socks5h
## 设置全局默认代理为 SOCKS5,并启用远程 DNS 解析(SOCKS5h)
## - socks.SOCKS5H 表示使用 SOCKS5 协议,并且让代理服务器(而非本地)解析域名(防止 DNS 泄露)
socks.setdefaultproxy(socks.SOCKS5H, "127.0.0.1", 10808)
# 将 Python 默认的 socket.socket 类替换为 socks.socksocket
# 这样所有后续通过标准 socket 接口发起的网络请求(如 urllib、requests、pymysql 等)
# 都会自动通过上面设置的 SOCKS5 代理进行连接,包括 TCP 和 DNS 请求(因使用了 SOCKS5H)
socket.socket = socks.socksocket