如何解决带有Socks5代理的urllib.request吗?
我想在代码中使用socks5代理。该怎么做?
我的代码:
from urllib.request import Request,urlopen
url = "https://api.ipify.org/"
request = Request(url)
response = urlopen(request)
print(response.read())
此外,我可以说使用http / https代理服务器
我做到了:
request.set_proxy(proxy_address,"http")
之前response = urlopen(url)
,但现在不起作用。
编辑
我发现了那样的东西
from urllib.request import Request,urlopen
import socks
import socket
request = Request("https://api.ipify.org/")
socks.set_default_proxy(socks.SOCKS5,IP_ADDR,PORT)
socket.socket = socks.socksocket
response = urlopen(request)
print(response.read())
但这给了我ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain
解决方法
您需要将 urllib.request.urlopen
与 custom ssl context
一起使用:link here
import socks
import socket
import ssl
from urllib.request import Request,urlopen
IP_ADDR = '127.0.0.1'
PORT = 9050
url = "http://httpbin.org/ip"
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
request = Request(url)
socks.set_default_proxy(socks.SOCKS5,IP_ADDR,PORT)
socket.socket = socks.socksocket
response = urlopen(request,context=ctx)
print(response.read())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。