Python3请求代理(Socks5)

时间:2019-10-10 14:31:38

标签: python proxy get python-requests socks

编辑:我不知道这是否是一回事,但是当我进行了大量测试并且运行了许多python脚本时,通常会发生这种情况。通常没有一个人同时活动,但是我会在很短的时间内运行其中的几个。我不知道这就是为什么错误开始发生的原因。

好,这是我的难题。 我有一个NordVPN帐户,我想通过ip循环访问我向Google提出的请求。有时效果很好。由于某些原因,在几次请求ping之后,我的程序开始变慢,然后开始出现“ Max Connection Exceeded”错误,据我所知IP正常。

我开始认为google阻止了ip,但随后我向其他网站发出请求,并且同样的错误继续存在。.我开始认为代理服务器可能只在特定时间内允许一定数量的请求,因此我尝试了一些免费代理,但我再次遇到相同的错误。 无论哪种方式,如果我将其搁置一会儿似乎都可以正常工作,然后再执行数十次ping操作,然后错误再次出现。

我能想到的唯一想法是,我不确定该如何测试,甚至不确定是否可以进行远程测试(工作路由器),也许某些开放连接保持打开状态并影响我的代码,然后当开放连接积压时扔出去我可以恢复正常。我开始寻找获取请求后是否需要“关闭”我的连接,但这似乎没有必要(尽管我什至不确定自己在寻找什么)。

这是我的代码的一个版本,我尝试了不使用会话,但是尝试了另一种编写会话的方式。所有人似乎都以相同的方式工作:

import requests, random

username = 'xxx'
password = 'yyy'

with open('proxies.txt', 'r') as p:
    proxy_lost = p.read().splitlines()
with open('data.txt', 'r') as d:
    data = d.read().splitlines()

for i in data:
    result = None
    while result is None:
        try:
            proxy = proxy_list[random.randint(0,len(proxy_list)-1)] + '.nordvpn.com'
            prox = 'socks5://{}:{}@{}:{}'.format(username, password, proxy, 1080) #I've also tried socks5h

            with requests.Session() as r:
                r.proxies['http': prox]
                r.proxies['https': prox]

                result = r.get('http://icanhazip.com')
                print(result.text.strip())

如果任何人有任何想法,将不胜感激。我已经想尽办法尝试新想法了。

这是我在整个过程中遇到的错误之一的示例:

  

回溯(最近通话最近):文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   线路809,在连接中       协商(自己,dest_addr,dest_port)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   _negotiate_SOCKS5中的第444行       自我,CONNECT,dest_addr)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   _SOCKS5_request中的第503行       引发SOCKS5AuthError(“ SOCKS5身份验证失败”)袜子。SOCKS5AuthError:SOCKS5身份验证失败

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ contrib \ socks.py”,   _new_conn中的第88行       ** extra_kw文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   第209行,在create_connection中       引发错误文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   第199行,位于create_connection中       sock.connect((remote_host,remote_port))文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   包装中的第47行       返回函数(* args,** kwargs)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ socks.py”,   连接线814       引发GeneralProxyError(“ Socket error”,error)袜子。GeneralProxyError:套接字错误:SOCKS5身份验证失败

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ connectionpool.py”,   第600行,在urlopen中       chunked = chunked)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ connectionpool.py”,   _make_request中的第354行       conn.request(方法,URL,** httplib_request_kw)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py”,   第1244行,应要求       self._send_request(方法,URL,正文,标头,encode_chunked)文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py”,   _send_request中的第1290行       self.endheaders(正文,encode_chunked = encode_chunked)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py”,   1239行,在标题中       self._send_output(消息主体,encode_chunked = encode_chunked)文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py”,   _send_output中的第1026行       self.send(msg)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py”,   发送中的966行       self.connect()文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ connection.py”,   连接线181       conn = self._new_conn()文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ contrib \ socks.py”,   _new_conn中的第110行       “无法建立新连接:%s”%错误urllib3.exceptions.NewConnectionError:   :   建立新连接失败:SOCKS5身份验证失败

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ adapters.py”,   发送中的第449行       timeout =超时文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ connectionpool.py”,   第638行,在urlopen中       _stacktrace = sys.exc_info()[2])文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ urllib3 \ util \ retry.py”,   第399行,递增       引发MaxRetryError(_pool,url,error或ResponseError(cause))urllib3.exceptions.MaxRetryError:   SOCKSHTTPConnectionPool(host ='icanhazip.com',port = 80):最多重试   网址超出了:/(由   NewConnectionError(':无法建立新连接:SOCKS5   身份验证失败'))

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ C:\ Users * \ Documents_Scripts \ Find   Proxies \ FindProxies.py“,第23行,在       结果= request.get('http://icanhazip.com',proxies = proxies)文件   “ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ api.py”,   第75行,进入       返回请求(“ get”,URL,params = params,** kwargs)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ api.py”,   60行,应要求       返回session.request(方法=方法,URL = URL,** kwargs)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ sessions.py”,   533行,在请求中       resp = self.send(prep,** send_kwargs)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ sessions.py”,   发送中的第646行       r = adapter.send(请求,** kwargs)文件“ C:\ Users * \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ requests \ adapters.py”,   发送中的第516行       引发ConnectionError(e,request = request)requests.exceptions.ConnectionError:   SOCKSHTTPConnectionPool(host ='icanhazip.com',port = 80):最多重试   网址超出了:/(由   NewConnectionError(':无法建立新连接:SOCKS5   身份验证失败'))

1 个答案:

答案 0 :(得分:0)

使用后,您还会再次关闭会话吗?

尝试:

r = requests.session(config={'keep_alive': False})

灵感来自: python-requests-close-http-connection