我建议使用 requesocks 和 stem(假设是 Tor)。 The official stem library is provided by Tor。这是一个基于我编写的刮板的简化示例,它也使用fake_useragent,所以你看起来像一个浏览器:
import requesocks
from fake_useragent import UserAgent
from stem import Signal
from stem.control import Controller
class Proxy(object):
def __init__(self,
socks_port=9050,
tor_control_port=9051,
tor_connection_password='password')
self._socks_port = int(socks_port)
self._tor_control_port = int(tor_control_port)
self._tor_connection_password = tor_connection_password
self._user_agent = UserAgent()
self._session = None
self._update_session()
def _update_session(self):
self._session = requesocks.session()
# port 9050 is the default SOCKS port
self._session.proxies = {
'http': 'socks5://127.0.0.1:{}'.format(self._socks_port),
'https': 'socks5://127.0.0.1:{}'.format(self._socks_port),
}
def _renew_tor_connection(self):
with Controller.from_port(port=self._tor_control_port) as controller:
controller.authenticate(password=self._tor_connection_password)
controller.signal(Signal.NEWNYM)
def _sample_get_response(self, url):
if not self._session:
self._update_session()
# generate random user agent string for every request
headers = {
'User-Agent': self._user_agent.random,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-us,en;q=0.5',
} # adjust as desired
response = self._session.get(url, verify=False, headers=headers)
return response
在执行此脚本之前,您必须运行 Tor 服务,并且您还必须修改您的 torrc 文件以启用控制端口 (9051)。
如果您从源代码编译 Tor,Tor 会将 torrc 文件放入 /usr/local/etc/tor/torrc,如果您安装了预构建的软件包,则将其放入 /etc/tor/torrc 或 /etc/torrc。如果您安装了 Tor 浏览器,请查找
Browser/TorBrowser/Data/Tor/torrc 在 Tor 浏览器目录中(在 Mac OS X 上,您必须右键单击或命令单击 Tor 浏览器图标并选择“显示包内容”,然后 Tor 浏览器目录变为
可见)。
找到torrc 文件后,您需要取消注释相应的行:
ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
请注意,上面的HashedControlPassword 是密码“password”。如果您想设置不同的密码(推荐),请将 torrc 文件中的 HashedControlPassword 替换为 tor --hash-password "<new_password>" 的输出,其中 <new_password> 是您要设置的密码。
一旦您更改了torrc 文件,您将需要重新启动 Tor 以使更改生效(请注意,您实际上只需要发送 Tor 一个 HUP 信号,而不是实际重新启动它)。重新启动它:
sudo service tor restart
我希望这会有所帮助,至少可以帮助您开始寻找您正在寻找的东西。