我如何使用 nordvpn 服务器作为 python 请求代理
How do I use nordvpn servers as python requests proxies
别问怎么做到的,我已经解析了 5000 多个 nordvpn 服务器的服务器端点。例如,它们通常类似于 ar15.nordvpn.com。我正在尝试使用 nordvpn 服务器作为请求代理。我知道这是可能的,因为 nordvpn 有一个教程,在使用端口 80 的浏览器中以相同的方式设置它。Nordvpn 只允许同时连接 6 个。我的问题是我正在为每个服务器做的事情,我将使用该 vpn 代理发送请求。发送请求后,它就完成了。但出于某种原因,即使在请求完成后,vpn 连接仍以某种方式接缝连接,因为在第 6 次请求后它失败了。我知道 nordvpn 一次只允许 6 个连接,但这是一个接一个的连接。最奇怪的部分是他们在我重新启动脚本后立即再次通过(直到它达到第 6 个请求)。所以它不是 nordvpn 速率限制,而是请求以某种方式保持已建立的连接。
到目前为止我尝试的是询问 r/learnpython。他们没用。
python 不和谐让我走得很远,但从未最终解决问题。
我已经在请求 header 中指定要关闭的连接,甚至使用请求会话,这些会话的 with syntex,并手动关闭会话,即使 with
应该处理这个问题。禁用流也没有做任何事情。
prox = [imagine a long list of nordvpn servers]
def printip():
# proxy auth according to request docs
prox = {
'https': 'https://myemail@gmail.com:password123@{}:80/'.format(i)
}
try:
with requests.Session() as s:
s.headers['Connection'] = 'close'
r = s.get('https://api.myip.com', proxies=prox, stream=False)
print(r.json()['ip'])
s.close()
except Exception as x:
print('bruh')
for i in prox:
# i is the server endpoint
printip()
time.sleep(3)
我预计请求会无限期地工作,但不知何故 vpn 连接仍然有效。
这个问题已有一年多了,但我认为它值得回答。非正式地,根据 nordvpn 的支持,HTTP/HTTPS 服务器不再维护,它们将很快全部停止。
作为替代方案,您可以使用 socks5
代理。与只能解释和处理 HTTP 和 HTTPS 网站的 HTTP 代理不同,SOCKS5 代理可以处理任何流量。 python requests
:
示例
先安装requests[socks]
或pysocks
,然后:
import requests
with requests.Session() as s:
# s.keep_alive = False
s.headers['Connection'] = 'close'
prox = {'https':'socks5://user:pass@host:port'}
r = s.get('https://api.myip.com', proxies=prox)
print(r.json()['ip'])
s.close()
Nordvpn 只有有限数量的 Socks5 服务器使用端口 1080,这些是:
amsterdam.nl.socks.nordhold.net
atlanta.us.socks.nordhold.net
dallas.us.socks.nordhold.net
dublin.ie.socks.nordhold.net
ie.socks.nordhold.net
los-angeles.us.socks.nordhold.net
nl.socks.nordhold.net
se.socks.nordhold.net
stockholm.se.socks.nordhold.net
us.socks.nordhold.net
您可以ping
获取每台服务器的主机IP地址。
您可以选择使用 python 发出 TCP 请求。如果您想正确连接到 nordvpn 服务器,您可以创建一个适配器来处理 ssl
连接的密码。其中一些配置需要指定以下内容:(read here)
TCP Port: 443
Tunnel Protocol: TCP (or UDP)
Encryption Cipher: AES-256-CBC
Hash Algorithm: SHA-512
User Pass Authentication: Enable
Username, Password: Your NordVPN service credentials
要在 python 中完成这项工作(虽然在某种程度上不能保证),请阅读这些 SO 问题:
- Opening a SSL socket connection in Python
- 如何在通过 python 发送请求时 select 指定密码
请求模块
- How to ensure I am closing the TCP connection in Python(针对您的情况)
别问怎么做到的,我已经解析了 5000 多个 nordvpn 服务器的服务器端点。例如,它们通常类似于 ar15.nordvpn.com。我正在尝试使用 nordvpn 服务器作为请求代理。我知道这是可能的,因为 nordvpn 有一个教程,在使用端口 80 的浏览器中以相同的方式设置它。Nordvpn 只允许同时连接 6 个。我的问题是我正在为每个服务器做的事情,我将使用该 vpn 代理发送请求。发送请求后,它就完成了。但出于某种原因,即使在请求完成后,vpn 连接仍以某种方式接缝连接,因为在第 6 次请求后它失败了。我知道 nordvpn 一次只允许 6 个连接,但这是一个接一个的连接。最奇怪的部分是他们在我重新启动脚本后立即再次通过(直到它达到第 6 个请求)。所以它不是 nordvpn 速率限制,而是请求以某种方式保持已建立的连接。
到目前为止我尝试的是询问 r/learnpython。他们没用。
python 不和谐让我走得很远,但从未最终解决问题。
我已经在请求 header 中指定要关闭的连接,甚至使用请求会话,这些会话的 with syntex,并手动关闭会话,即使 with
应该处理这个问题。禁用流也没有做任何事情。
prox = [imagine a long list of nordvpn servers]
def printip():
# proxy auth according to request docs
prox = {
'https': 'https://myemail@gmail.com:password123@{}:80/'.format(i)
}
try:
with requests.Session() as s:
s.headers['Connection'] = 'close'
r = s.get('https://api.myip.com', proxies=prox, stream=False)
print(r.json()['ip'])
s.close()
except Exception as x:
print('bruh')
for i in prox:
# i is the server endpoint
printip()
time.sleep(3)
我预计请求会无限期地工作,但不知何故 vpn 连接仍然有效。
这个问题已有一年多了,但我认为它值得回答。非正式地,根据 nordvpn 的支持,HTTP/HTTPS 服务器不再维护,它们将很快全部停止。
作为替代方案,您可以使用 socks5
代理。与只能解释和处理 HTTP 和 HTTPS 网站的 HTTP 代理不同,SOCKS5 代理可以处理任何流量。 python requests
:
先安装requests[socks]
或pysocks
,然后:
import requests
with requests.Session() as s:
# s.keep_alive = False
s.headers['Connection'] = 'close'
prox = {'https':'socks5://user:pass@host:port'}
r = s.get('https://api.myip.com', proxies=prox)
print(r.json()['ip'])
s.close()
Nordvpn 只有有限数量的 Socks5 服务器使用端口 1080,这些是:
amsterdam.nl.socks.nordhold.net
atlanta.us.socks.nordhold.net
dallas.us.socks.nordhold.net
dublin.ie.socks.nordhold.net
ie.socks.nordhold.net
los-angeles.us.socks.nordhold.net
nl.socks.nordhold.net
se.socks.nordhold.net
stockholm.se.socks.nordhold.net
us.socks.nordhold.net
您可以ping
获取每台服务器的主机IP地址。
您可以选择使用 python 发出 TCP 请求。如果您想正确连接到 nordvpn 服务器,您可以创建一个适配器来处理 ssl
连接的密码。其中一些配置需要指定以下内容:(read here)
TCP Port: 443
Tunnel Protocol: TCP (or UDP)
Encryption Cipher: AES-256-CBC
Hash Algorithm: SHA-512
User Pass Authentication: Enable
Username, Password: Your NordVPN service credentials
要在 python 中完成这项工作(虽然在某种程度上不能保证),请阅读这些 SO 问题:
- Opening a SSL socket connection in Python
- 如何在通过 python 发送请求时 select 指定密码 请求模块
- How to ensure I am closing the TCP connection in Python(针对您的情况)