Python - 切换到我的本地 SOCKS 代理的连接

Python - Toggling a connection to my local SOCKS proxy

我正在 Python 中编写一个爬虫,它将 运行 通过 Tor。我让 Tor 工作并使用了来自 this YouTube tutorial 的代码,关于如何路由我的 Python 请求以通过 127.0.0.1:9050 的 Tor SOCKS 代理。

我想不通的是如何在我的脚本中切换 on/off。有些请求我想通过 Tor,有些则不想。基本上,我无法在我正在使用的 socket 对象中找出正确的 "close" 或 "shutdown" 方法,因为我不理解它们。

这是现在发生的事情

import socket
import socks
import requests

def connect_to_socks():
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050, True)
    socket.socket = socks.socksocket

r = requests.get('http://wtfismyip.com/text')
print r.text #prints my ordinary IP address
connect_to_socks()
r = requests.get('http://wtfismyip.com/text')
print r.text #prints my Tor IP address

如何关闭到 SOCKS 代理的套接字路由,以便它通过我的普通互联网连接?

我希望使用 requests 而不是 urllib2 因为它看起来容易得多但是如果我必须进入 urllib2 甚至 [=17= 的胆量] 我会。但宁愿不要。

听了这个 good YouTube tutorial 就明白了。

只需要打电话给 socket.setdefaultproxy(),它就会把我带回来。

对于 Python 3,您可以使用此设置回默认套接字:

socks.setdefaultproxy(None)
socket.socket = socks.socksocket