python通过代理(socks5 TOR)请求lib工作-错误
调用加载程序类的代码:python通过代理(socks5 TOR)请求lib工作-错误,python,proxy,python-requests,tor,socks,Python,Proxy,Python Requests,Tor,Socks,调用加载程序类的代码: import socket import requests class Loader: url = "http://*redacted*.onion/login" user = "username" password = 'password' manageUrl = '' def __init__(self, config): self.config = config self.restartS
import socket
import requests
class Loader:
url = "http://*redacted*.onion/login"
user = "username"
password = 'password'
manageUrl = ''
def __init__(self, config):
self.config = config
self.restartSession()
def restartSession(self):
self.userSession = requests.session()
self.userSession.proxies['http'] = 'http://127.0.0.1:9050'
self.userSession.proxies['https'] = 'https://127.0.0.1:9051'
def robotCheck(self):
request = requests.get('http://*redacted*.onion/login')
print(request)
#self.session.post(self.robotCheckUrl, data=checkResult)
def authorization(self):
self.session.get(self.url)
authPage = self.session.post(self.url, data = self.getAuthData())
def getAuthData(self):
return {'login' : self.user, 'password' : self.password}
像这样包装以仅获取异常
http = Loader(Config())
page = http.robotCheck()
由于以下原因,您可能会出现这些错误:
- 您的服务器可能会拒绝您的连接(您发送的连接太多
短时间内来自同一ip地址的请求) - 检查您的代理设置
仅供参考:Tor是SOCKS代理,因此代理配置需要略有不同 更改以下行:
def robotCheck(self):
try:
request = requests.get('http://hydraruzxpnew4af.onion/login')
print(request)
except requests.exceptions.RequestException as e:
print('exception caught', e)
#self.session.post(self.robotCheckUrl, data=checkResult)
致:
端口9051是Tor控制器端口。对于Tor上的HTTP和HTTPS SOCKS连接,请使用端口9050(默认SOCKS端口)
socks5h
方案需要通过Tor而不是客户端解析DNS名称。这将私有化DNS查找,并且是能够解析.onion
地址所必需的
编辑:我可以使用以下示例对.onion
地址进行SOCKS请求:
self.userSession.proxies['http'] = 'socks5h://127.0.0.1:9050'
self.userSession.proxies['https'] = 'socks5h://127.0.0.1:9050'
使用
pip3安装-U requests[socks]”确保您拥有最新的请求库。
以下是结果:$python main.py异常捕获到HTTPConnectionPool(host='hydraruzxpnew4af.onion',port=80):url:/login超过了最大重试次数(由NewConnectionError引起(':未能建立新连接:[Errno 11001]getaddrinfo failed'))回溯(上次调用):文件“main.py”,第34行,在page=http.robotCheck()文件“C:\Users\user001\Desktop\automation\Loader.py”,第28行,在robotCheck print(request)UnboundLocalError:在赋值之前引用的局部变量“request”与它实际抛出的“[Errno 11001]getaddrinfo失败”,但主机可以通过tor访问,我检查对了now@SergeyRomanov请参见编辑。它应该会起作用。getaddrinfo失败意味着它无法解析.onion
地址,这似乎不是使用Tor解析名称。
self.userSession.proxies['http'] = 'http://127.0.0.1:9050'
self.userSession.proxies['https'] = 'https://127.0.0.1:9051'
self.userSession.proxies['http'] = 'socks5h://127.0.0.1:9050'
self.userSession.proxies['https'] = 'socks5h://127.0.0.1:9050'
import socket
import requests
s = requests.session()
s.proxies['http'] = 'socks5h://127.0.0.1:9050'
s.proxies['https'] = 'socks5h://127.0.0.1:9050'
print(s.proxies)
r = s.get('http://***site***.onion/')