当通过python爬虫爬取外网资源,python需要通过socks5等代理连接网络,这里记录一下两种常用方法。
修改内置py库
当使用urllib或者socket等内置库连接网络时,分别修改urllib.py或者socket.py文件。
不过修改以后,再使用其他python程序时也会受到影响,需要记得再改回来。
或者使用pyenv或者类似的工具,使该程序使用独立的虚拟python环境,防止影响其他程序。
修改urllib.pyimport socks import socket socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080) socket.socket = socks.socksocket
修改socket.py
socket = SocketType = _socketobject # 在socket.py找到这一行 # 在下面添加下面的代码 import socks socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080) socket = socks.socksocket
使用PySocks
PySocks是一个基于Python的SOCKS代理客户端,它是SocksiPy的一个分支,修改了一些bug和增加了一些额外功能。
安装
git clone https://github.com/Anorov/PySocks cd PySocks python setup.py install
或者直接pip install PySocks
使用
import socket import socks socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1080) socket.socket = socks.socksocket response = request.get("www.google.com")
当众人都哭时,
应该允许有的人不哭。
当哭成为一种表演时,
更应该允许有的人不哭。
——莫言
评论
859636 560019Hello. I wanted to ask one thingis this a wordpress web website as we are planning to be shifting over to WP. Furthermore did you make this template yourself? Thanks. 485049
217540 783342Extremely instructive and excellent bodily structure of subject matter, now thats user pleasant (:. 26638