我如何在Python请求代理中使用nordvpn服务器

时间:2019-07-08 11:32:49

标签: python http proxy request vpn

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

到目前为止,香港专业教育学院尝试过问r / learnpython。他们没用。 python不和谐使我走得很远,但最终没有解决问题。 我已经在请求标头中指定了要关闭的连接,甚至使用了请求会话,这些会话都带有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连接仍然有效。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

很抱歉,我不允许发表评论,这是我可以寻求帮助的唯一方法。我试图做同样的事情,我尝试重现您的代码,并始终获得

Failed to parse: https://myemail@gmail.com:mypass@it61.nordvpn.com:80/

还是端点名称有问题? @ Gabrieldaboss65