Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python通过代理(socks5 TOR)请求lib工作-错误_Python_Proxy_Python Requests_Tor_Socks - Fatal编程技术网

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/')