前言:
用過很多種代理使用方式,這里總結一下.
1、urllib+socks5的代理1
from sockshandler import SocksiPyHandler import socks from urllib.request import build_opener headers = { 'Accept': 'text/html, application/xhtml+xml, image/jxr, */*', 'Accept - Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5', # 'Connection': 'Keep-Alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } url = 'https://www.google.com/' proxy_handler = SocksiPyHandler(proxytype=socks.SOCKS5, proxyaddr='***', proxyport=0000, username='***', password='***') opener = build_opener(proxy_handler) opener.addheaders = [(k, v) for k, v in headers.items()] resp = opener.open(url, timeout=30) resp_html = resp.read() print(resp_html.decode())
2、如果本機掛了Shadowsocks代理,代理端口為1080,則代碼可以修改為:
proxy_handler = SocksiPyHandler(proxytype=socks.HTTP, proxyaddr='127.0.0.1', proxyport=1080)
3、urllib+socks5的代理2
from urllib.request import ProxyHandler, build_opener headers = { 'Accept': 'text/html, application/xhtml+xml, image/jxr, */*', 'Accept - Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5', # 'Connection': 'Keep-Alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } proxies = { "socks5": "socks5://user:pwd@ip:port" } url = 'https://www.baidu.com/' proxy_handler = ProxyHandler(proxies) opener = build_opener(proxy_handler) opener.addheaders = [(k, v) for k, v in headers.items()] resp = opener.open(url, timeout=30) resp_html = resp.read() print(resp_html.decode())
以上代碼可以運行,但是感覺速度要慢一些。以上測試了,如果本地http代理,可以寫成:
proxies = { "http": "http://127.0.0.1:1080/", "https": "https://127.0.0.1:1080/" }
4、使用socks設置全局代理
import socks import socket
socks.set_default_proxy(proxy_type=socks.SOCKS5, addr="***", port=000, rdns=True, username='***', password='***') socket.socket = socks.socksocket
安裝socks:
pip install PySocks# 會安裝 socks 和 sockshandler 兩個模塊
5、使用requests設置代理
import requests as s headers = { 'Accept': 'text/html, application/xhtml+xml, image/jxr, */*', 'Accept - Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5', 'Connection': 'Keep-Alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } proxies = { "http": "socks5://user:pwd@ip:port/", "https": "socks5://user:pwd@ip:port/" } # proxies = { # "socks5": "socks5://user:pwd@ip:port" # } # proxies = { # "http": "http://127.0.0.1:1080/", # "https": "https://127.0.0.1:1080/" # } # url = 'https://www.google.com/' # url = 'https://search.yahoo.com/' url = 'https://www.baidu.com/' resp = s.get(url=url, proxies=proxies, headers=headers) print(resp.text)
