10-穿墙代理的设置 | 01.数据抓取 | Python

简介:

10-穿墙代理的设置

郑昀 201005 隶属于《01.数据抓取》小节

 

我们访问 Twitter 等被封掉的网站时,需要设置 Proxy 。

1.使用HTTP Proxy

下面是普通HTTP Proxy的设置方式:

1.1.pycurl 的设置

_proxy_connect = "http://127.0.0.1:1984"

c = pycurl.Curl()

c.setopt(pycurl.PROXY, _proxy_connect)

 

1.2.urllib2 的设置

req = urllib2.Request(link) 
proxy = urllib2.ProxyHandler({'http':'http://127.0.0.1:1984'}) 
opener = urllib2.build_opener(proxy,urllib2.HTTPHandler) 
urllib2.install_opener(opener) 
req.add_header('User-Agent', URLLIB2_USER_AGENT) 
urllib2.urlopen(link)

… 
opener.close()

 

1.3.httplib 的设置

conn = httplib.HTTPConnection("127.0.0.1",1984) 
conn.request("GET", "http://www.python.org/index.html") 
r = conn.getresponse() 
print r.status, r.reason

 

1.4.httplib2 的设置


import httplib2
import socks
httplib2.debuglevel=4
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'proxy_host', proxy_port))
r,c = h.request(http://bitworking.org/news/)


参见 httplib2 的 Wiki 说明

socks 库需要安装,主页地址:http://socksipy.sourceforge.net/ ,它不需要安装,下载源代码包后直接把 socks.py 复制到 Python's lib/site-packages 目录即可。

httplib2 则用 easy_install httplib2 安装即可。

 

1.5.socket代理

更底层的socket代理如下所示:


import socks, socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "proxy_host", proxy_port)
socket.socket = socks.socksocket
需要 socks 库。 


1.6.twisted.web.client 的设置


from twisted.internet import reactor
from twisted.web import client
class ProxyClientFactory(client.HTTPClientFactory):
    def setURL(self, url):
        client.HTTPClientFactory.setURL(self, url)
        self.path = url
factory = ProxyClientFactory('http://url_you_want')
reactor.connectTCP('http://proxy_host', proxy_port, factory)
reactor.run()
如果代理需要Basic身份验证,如代理地址是:http://user:pwd@host:port ,那么就用到proxy-authenticate header了:


import base64
# Proxy credentials
proxyAuth = base64.encodestring('%s:%s' % (proxy_username,proxy_password))
proxy_authHeader = "Basic " + proxyAuth.strip()

factory = ProxyClientFactory('http://url_you_want')

factory.headers={'Proxy-Authenticate': proxy_authHeader}

reactor.connectTCP('http://proxy_host', proxy_port, factory)

只要把Proxy-Authenticate header字段设置好,前面的httplib/urllib2等如法炮制,可参考 Python2.6的 test_urllib2 示范代码中的 test_proxy_basic_auth 函数。

2.使用HTTPS Proxy

如果代理是HTTPS的,并需要证书,那么请参考 python-httpclient 的写法。

 

2.1.urllib2 的设置

Python 2.X可参考 Recipe 456195 的代码。或参见 Python2.6的 test_urllib2 示范代码中的test_proxy_https 函数。

Python 3k的参见 revision 74204

目录
相关文章
|
3天前
|
机器学习/深度学习 算法 机器人
使用 Python TorchRL 进行多代理强化学习
本文详细介绍了如何使用TorchRL库解决多代理强化学习(MARL)问题,重点讨论了在多代理环境中应用近端策略优化(PPO)。通过使用VMAS模拟器,该文展示了如何在GPU上并行训练多机器人系统,使其在避免碰撞的同时到达目标。文章涵盖了依赖项安装、PPO原理、策略与评论家网络设计、数据收集及训练循环,并强调了TorchRL在简化开发流程、提升计算效率方面的优势。无论是集中式还是分布式评论家配置,TorchRL均能有效支持复杂的MARL研究与实践。
22 5
使用 Python TorchRL 进行多代理强化学习
|
2天前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
9 1
|
20天前
|
数据采集 数据可视化 Python
【python】python猫眼电影数据抓取分析可视化(源码+数据集+论文)【独一无二】
【python】python猫眼电影数据抓取分析可视化(源码+数据集+论文)【独一无二】
|
22天前
|
数据采集 存储 数据可视化
【python】python天气气候数据抓取分析可视化(源码+数据+可视化+报告)【独一无二】
【python】python天气气候数据抓取分析可视化(源码+数据+可视化+报告)【独一无二】
|
22天前
|
Python
【python】python红楼梦小说数据抓取合并(源码+数据)【独一无二】
【python】python红楼梦小说数据抓取合并(源码+数据)【独一无二】
|
22天前
|
数据采集 自然语言处理 数据可视化
【python】python新闻数据抓取情感分析可视化(源码+数据)【独一无二】
【python】python新闻数据抓取情感分析可视化(源码+数据)【独一无二】
|
7天前
|
Python Windows 内存技术
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
|
8天前
|
NoSQL 网络安全 Redis
用python安装redis并设置服务自启
用python安装redis并设置服务自启
10 0
|
16天前
|
Linux UED iOS开发
Python colorama 设置控制台、命令行输出彩色文字
Python colorama 设置控制台、命令行输出彩色文字
14 0
|
16天前
|
Python
Python 设置环境变量方法
Python 设置环境变量方法
11 0
下一篇
云函数