【问题标题】:How do I use nordvpn servers as python requests proxies如何使用 nordvpn 服务器作为 python 请求代理
【发布时间】:2019-11-17 21:59:21
【问题描述】:

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

到目前为止,我尝试的是询问 r/learnpython。他们没用。 python 不和谐让我走得很远,但从未最终解决问题。 我已经在请求标头中指定了要关闭的连接,甚至使用了请求会话,这些会话的 with syntex,并手动关闭了 sesson,即使 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 连接仍然保持活动状态。

【问题讨论】:

  • 你的标题是什么样子的?你可以试试with requests.Session(config={'keep_alive': False}) as s: 或许?
  • config 不作为参数存在,我已经说过我强制连接标头关闭而不是保持活动
  • 我的错.. 你成功了吗?跳过会话怎么样,只使用request.get2.python-requests.org//en/latest/user/advanced/#proxies
  • 仍然没有让它工作,我使用了一切。
  • 我不确定@Chris 的回答是否真的是对您问题的回答,但我对他的回答添加了评论。我尝试了https,但在切换到tcpudp 之前无法让它工作。我在 JavaScript 中尝试了 8 个同时请求,它们都通过了。

标签: python http proxy request vpn


【解决方案1】:

这个问题已经有一年多了,但我认为值得回答。非正式地,根据 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 问题:

【讨论】:

  • 感谢您的回复。这个答案实际上帮助我解决了我正在使用 nordvpn 处理的问题。现在我有一个请求 API 的服务,但有时我必须更改代理,因为我使用 nordvpn 我所做的是运行批处理脚本来更改 vpn(nordvpn 有一个适用于这)。但是这个解决方案有点糟糕。关于您的解决方案,在每个请求下执行 vpn 身份验证的速度有多快?速度对我来说很重要。
猜你喜欢
  • 2021-02-07
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多