Python 使用requests.get-through tor代理发出请求,但代码没有响应
我想使用Tor向一个网页发出多个GET请求。我想对每个请求使用不同的IP地址,所以我编写了这个小程序Python 使用requests.get-through tor代理发出请求,但代码没有响应,python,python-requests,tor,Python,Python Requests,Tor,我想使用Tor向一个网页发出多个GET请求。我想对每个请求使用不同的IP地址,所以我编写了这个小程序 from stem import Signal from stem.control import Controller import requests def change_ip(): with Controller.from_port(port=9051) as contr: contr.authenticate(password='abhishek')
from stem import Signal
from stem.control import Controller
import requests
def change_ip():
with Controller.from_port(port=9051) as contr:
contr.authenticate(password='abhishek')
contr.signal(Signal.NEWNYM)
session=requests.session()
session.proxies={}
session.proxies['http']='socks5://127.0.0.1:9051'
session.proxies['https']='socks5://127.0.0.1:9051'
for i in range(5):
r=session.get('http://httpbin.org/ip')
print(r.text)
change_ip()
使用这个,我发出了多个请求,但这个程序没有显示任何输出,它像我在这张图中所显示的那样卡住了
但是,当我删除代码的session.proxy区域时,代码正在运行并显示输出,但对我来说没有意义,因为我想在每次请求后更改ip地址。Tor在端口
9050
上运行代理,而不是9051
。端口9051
仅用于控制/更改Tor
我还需要在发送singnal后几秒钟才能获得新的IP 当我不为所有URL使用一个会话,而只对普通请求使用一个会话时,效果会更好
requests.get(..., proxies=proxies)
对于一个会话,它有时为和提供相同的IP,但不为
如果我在每个循环中创建新会话,它将正常工作
无会话版本
from stem import Signal
from stem.control import Controller
import requests
import time
def change_ip():
with Controller.from_port(port=9051) as control:
control.authenticate(password='password')
control.signal(Signal.NEWNYM)
proxies = {
'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050',
}
for i in range(5):
r = requests.get('https://httpbin.org/ip', proxies=proxies)
print(r.json()['origin'])
r = requests.get('https://api.ipify.org', proxies=proxies)
print(r.text)
r = requests.get('https://icanhazip.com', proxies=proxies)
print(r.text)
change_ip()
time.sleep(5)
会话版本-每个循环中都有新会话
from stem import Signal
from stem.control import Controller
import requests
import time
def change_ip():
with Controller.from_port(port=9051) as control:
control.authenticate(password='password')
control.signal(Signal.NEWNYM)
for i in range(5):
session = requests.Session()
session.proxies = {
'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050',
}
r = session.get('https://httpbin.org/ip')
print(r.json()['origin'])
r = session.get('https://api.ipify.org')
print(r.text)
r = session.get('https://icanhazip.com')
print(r.text)
change_ip()
time.sleep(5)
嗨,欢迎来到苏。你能详细解释一下它没有响应或显示错误是什么意思吗?你打算怎么办?请用详细解释更新问题。谢谢。我编辑了这个问题,请帮助解决这个问题。这个问题是在端口
9050
上运行代理,而不是9051
。端口9051
仅用于控制/更改我已运行此代码并遇到错误=>requests.exceptions.ConnectionError:sockshttppsconnectionpool(host='httpbin.org',Port=443):url:/ip超过了最大重试次数(由NewConnectionError(':未能建立新连接:0x01:常规SOCKS服务器故障'))您在浏览器中连接有问题吗?可能现在只有服务器有问题。或者您必须更新OpenSSL
才能正确使用SSL和HTTPS?其他URL是否有问题?和?是,并引发相同的错误,但此网站引发此权限被拒绝错误=>stem.connection.UnreadableCookie文件:身份验证失败:无法读取“/run/tor/control.authcookie”([Errno 13]权限被拒绝:“/run/tor/control.authcookie”)但是我没有在tor control Port上应用任何密码当您使用http://
而不是https://
时,您有问题吗?您是否在控件中使用了密码。验证(password='password')
?如果您在tor上没有密码,那么您是否尝试在没有密码的情况下运行它?如果您以admin-sudo python script.py
的身份运行它,它可能会在没有权限被拒绝的情况下运行:'/run/tor/control.authcookie'
,但奇怪的是,它在访问它时遇到了问题。