python - 如何使用 ipv6 https 代理连接到网站
问题描述
import requests
import socket
from unittest.mock import patch
orig_getaddrinfo = socket.getaddrinfo
def getaddrinfoIPv6(host, port, family=0, type=0, proto=0, flags=0):
return orig_getaddrinfo(host=host, port=port, family=socket.AF_INET6, type=type, proto=proto, flags=flags)
with patch('socket.getaddrinfo', side_effect=getaddrinfoIPv6):
r = requests.get('http://icanhazip.com')
print(r.text)
我不想使用 ipv4 代理连接到网站,而是想使用 ipv6 https 代理进行连接。我已经在谷歌上搜索了答案,但没有找到任何答案(据我所知)......我找到的最接近的是......(不使用 ipv6 代理,而是使用我自己的 ipv6)。我愿意使用除了请求之外的其他东西来执行此操作,但是,请求是首选。稍后我将尝试线程。
解决方案
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
proxy = {"http":"http://username:password@[2604:0180:2:3b5:9ebc:64e9:166c:d9f9]", "https":"https://username:password@[2604:0180:2:3b5:9ebc:64e9:166c:d9f9]"}
url = "https://icanhazip.com"
r = requests.get(url, proxies=proxy, verify=False)
print(r.content)
如果上面的代码不起作用
import requests
proxy = {"http": "http://userame:password@168.235.109.30:18117", "https":"https://userame:password@168.235.109.30:18117"}
url = "https://icanhazip.com"
r = requests.get(url, proxies=proxy)
print(r.content)
这是我的 ipv6 https 代理的当前提供程序,但是,他们使用 ipv6 而不是 ipv4 到他们的客户端,所以这就是此代码有效的原因,而上面的代码不起作用(如果使用相同的提供程序)如果您使用的提供程序完全支持 ipv6,那么顶部的代码应该适合你。
推荐阅读
- firebase - Firebase CLI 命令不适用于 VS Code Git Bash 终端
- java - 大文本数据的非对称密码算法
- reactjs - 在 mapDispatchToProps 之后找不到函数
- javascript - 如何以编程方式检测离子应用程序中是否开启了飞行模式
- jquery - 回复:process.env.PORT || '3000' 带有红色下划线
- python - 关于在不同 Linux 发行版中使用 conda-pack 的问题
- javascript - Jquery Regex - 检查一个或多个逗号分隔值(12 个十六进制字符)
- javascript - 函数上下文绑定,因此我可以捕获远程抛出的异常
- python - 在线游戏报错“(”ConnectionAbortedError: [WinError 10053]”
- python - 是否可以在特定点将字符串分成两半?