如何使用nordvpn服务器作为python请求代理

Dir*_*ory 7 python vpn proxy http request

不要问如何,但我解析了 5000 多个 NordVPN 服务器的服务器端点。例如,它们通常类似于 ar15.nordvpn.com。我正在尝试使用 NordVPN 服务器作为请求代理。我知道这是可能的,因为 Nordvpn 有一个教程,在使用端口 80 的浏览器中以相同的方式设置它。 Nordvpn 只允许同时有 6 个并发连接。我的问题是,我所做的是针对每个服务器,我将使用该 VPN 代理发送请求。请求发送后就完成了。但由于某种原因,即使在请求完成后,VPN 连接仍然以某种方式连接,因为在第 6 个请求之后它失败了。我知道 NordVPN 一次只允许 6 个连接,但这是一个接一个的连接。最奇怪的部分是,在我重新启动脚本后,它们立即再次执行(直到到达第 6 个请求)。因此,它不是 NordVPN 速率限制,而是以某种方式请求保持已建立的连接。

到目前为止我尝试过询问 r/learnpython。他们毫无用处。python 的不和谐让我走得很远,但从未最终解决问题。我已在请求标头中指定要关闭的连接,甚至使用了请求会话、这些会话的 with 语法,并手动关闭会话,尽管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)
Run Code Online (Sandbox Code Playgroud)

我预计这些请求将无限期地工作,但不知何故,VPN 连接仍然保持活动状态。

Ava*_*lla 13

这个问题已经有一年多了,但我认为值得回答。根据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()
Run Code Online (Sandbox Code Playgroud)

Nordvpn 只有有限数量的使用端口 1080 的 Socks5 服务器,它们是:

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
Run Code Online (Sandbox Code Playgroud)

您可以ping在每个服务器上获取主机IP地址。


或者,您可以使用 python 发出 TCP 请求。如果您想正确连接到 NordVPN 服务器,您可以创建一个适配器来处理ssl连接的密码。其中一些配置需要指定以下内容:(请阅读此处

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
Run Code Online (Sandbox Code Playgroud)

要在 python 中实现此功能(但在某种程度上不能保证),请阅读以下问题:

  • Nord 的socks5 列表更大了,现在只需点击```curl -s https://nordvpn.com/api/server | jq -r ".[] | select(.features.socks==true) | [.domain, .name] | @tsv"``` (3认同)