B.K*_*Kos 5 python proxy urllib
尝试在 Python 中使用 urllib 和 PySocks 使用 SOCK4 代理打开 URL 失败,并显示
urllib.error.URLError: <urlopen error Socket error: 0x5b: Request rejected or failed>
Run Code Online (Sandbox Code Playgroud)
有人知道可能是什么问题以及为什么会失败吗?或者有人有另一种方法可以使用 SOCKS4 代理在 Python 中打开 URL(尝试过 urllib 和 PySocks 文档示例)?
我检查并发现代理已启动并且应该可以工作(与其他人尝试过 - 在使用 SOCKS4 作为方案时总是失败)。使用 HTTP 作为代理工作得很好 - proxy = proxies[1]。
import socks
import socket
from sockshandler import SocksiPyHandler
import contextlib
from urllib import request
TIMEOUT = 50
if __name__ == '__main__':
headr = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X vAppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
proxies = [("SOCKS4","88.198.224.84", 4145), ("HTTP","159.69.91.65", 3128)]
proxy = proxies[0]
teipe = socks.PROXY_TYPE_SOCKS4
if proxy[0] == "SOCKS4":
teipe = socks.PROXY_TYPE_SOCKS4
elif proxy[0] == "HTTP":
teipe = socks.PROXY_TYPE_HTTP
#socks.setdefaultproxy(teipe, proxy[1], proxy[2])
#socket.socket = socks.socksocket
shandler = SocksiPyHandler(teipe, proxy[1], proxy[2])
baseurl = "https://google.com/"
opener = request.build_opener(shandler)
request.install_opener(opener)
req = request.Request(baseurl, data=None, headers=headr)
with contextlib.closing(request.urlopen(req, timeout=TIMEOUT)) as googl:
print("Opened " + baseurl + " with " + str(request.getproxies()))
Run Code Online (Sandbox Code Playgroud)
调试错误对我没有帮助 - error.reason.socket_err 是:
SOCKS4Error: 0x5b: Request rejected or failed
Run Code Online (Sandbox Code Playgroud)