Python爬虫教程

第一章: 初学乍练-Python快速入门

第二章: 初窥门径-从全局把握网络爬虫

第三章: 爬虫数据-网页与JSON

第四章: 爬虫核心-HTTP协议

第五章: 手到擒来-数据的抓包

第六章: 利刃出鞘-HTTP请求库

第七章: 尘埃落定-数据的解析

第八章: 逆向初探-JS逆向

第九章: 爬虫进阶-Selenium, 中间人拦截

第十章:斗转星移-常用的反爬策略及应对方法

首页 > Python爬虫教程 > 第四章: 爬虫核心-HTTP协议 > 4.3节: 爬虫之匿-HTTP代理

4.3节: 爬虫之匿-HTTP代理

薯条老师 2021-02-20 10:48:19 235022 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

4.3.1什么是HTTP代理?

现实生活中会遇见各种代理,比如房屋中介。房屋中介说好听点是个代理,说不好听点就是跑腿的,代为房东们跑东跑西,寻找租客或买家。

房屋中介是房东的代理,那么HTTP代理呢?自然就是HTTP的代理。    

进一步理解HTTP代理,同学们可以先梳理下网页的访问过程。我们访问某一个网页时,会先打开浏览器,然后在地址栏中输入网页的URL,按下回车键以后,浏览器向HTTP服务器发起请求。HTTP服务器对浏览器的请求进行处理,最终响应网页内容给浏览器进行解析和渲染。

1613788446(1).jpg

 HTTP代理,既可以正向代理HTTP客户端,向HTTP服务器发送请求。也可以反向代理HTTP服务器,向HTTP客户端响应数据。下图为代理浏览器(HTTP客户端)向服务端发起HTTP请求:

1613788476(1).jpg 

4.3.2 HTTP正向代理

所谓的正向代理,是指沿着客户端请求的方向所进行的HTTP代理。以浏览器访问网页为例,如果没有正向代理,浏览器会直接向服务器发起请求。如果引入正向代理,会在浏览器与服务器之间增加一个HTTP代理,代为浏览器向服务器发起请求。

以租房进行举例,我们可以委托中介来帮我们找房子,那么怎么做呢?将租房要求告诉中介,然后中介再根据这些要求去找合乎我们要求的房源。此时的中介就是我们的正向代理。    

引入正向代理以后,直接与HTTP服务器交互的就是代理,利用这样的特性,我们可以使用HTTP代理对服务器隐藏用户的IP地址等其它信息。正向代理经常用于爬虫程序中,我们可以在爬虫程序中使用HTTP代理,以隐藏爬虫的IP信息,防止被站点服务器拉入黑名单。

频繁地使用某一个固定的IP来抓取站点数据,会很容易被服务器的反爬程序识别为恶意爬虫,此时我们可以借助于HTTP代理,来隐藏爬虫的IP地址。    

代码实例-在requests中使用HTTP代理:

import requests
"""
(1) 字典类型变量headers,用来定义HTTP请求头。我们可以在headers变量中定义User-Agent,cookie等字段
 
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
 
# 在HTTP请求头中发送cookie
'cookie':'id=22932bc7cac200a2||t=1596548529|et=730|cs=002213fd4896b0a597850f7bf7'
}
 
"""
(1) 字典类型变量proxies,用来配置HTTP代理。
(2) 键名表示代理所使用的协议,常用的有http与https。https协议是HTTP加上 TLS/SSL 协议所构建的加密传输协议。
(3) 键值表示http代理的地址。
"""
proxies = {
        # 以下代理并不存在,为薯条老师虚构的代理地址,读者可自行找寻可用的HTTP代理
        "http":"http://119.138.33.28:8080"
}
 
# 以下url并不存在,同学们在实际练习时,可将之替换为待抓取的网页的url
url = "http://www.justtest.com"
 
# 通过关键字参数proxies来传递http代理的配置信息
response = requests.get(url, headers = headers,  proxies = proxies)

HTTP代理可以隐匿爬虫的IP地址,我们可以根据http代理的匿名程度, 将其分为以下三类:

HTTP代理                

描述                

透明代理                

会传送用户的真实IP,并不是真正意义上的匿名                

匿名代理                

不会传送用户的真实IP,但是会在请求中携带与代理相关的字段信息                

高匿代理                

不会传送用户的真实IP,也不会在请求中携带与代理相关的字段信息                

在互联网中,既有免费的HTTP代理,也有商用的HTTP代理。免费HTTP代理的IP质量差,稳定性不佳。商用HTTP代理稳定性高,高度可匿,读者需根据自己的实际需求来进行选择。

4.3.3 HTTP反向代理

所谓的反向代理,是指沿着服务端响应的方向进行的HTTP代理。对客户端来说,反向代理即为源服务器。反向代理代为服务器接收客户端请求,在数据已缓存的情况下,可以直接向客户端响应数据,而无需源服务器进行处理。从这一点来看,使用反向代理可以减轻源服务器的负载压力,提升对资源的响应速度。

 nginx是比较流行的HTTP反向代理,同学们可以通过下图对正向代理,反向代理进行理解:

 1613788634(1).jpg

与爬虫相关的主要是正向代理,关于HTTP反向代理,不再进行介绍。感兴趣的读者可以继续学习与反向代理相关的知识。

4.3.4 知识要点

(1) HTTP代理,既可以正向代理HTTP客户端,向HTTP服务器发送请求。也可以反向代理HTTP服务器,向HTTP客户端响应数据。    

(2) HTTP正向代理,即代为客户端向HTTP服务器发起请求。HTTP反向代理,即代为服务端接收客户端的请求。    

(3) 正向代理经常用于爬虫程序中,在爬虫程序中使用HTTP正向代理,可以隐藏爬虫的IP信息,防止被站点服务器拉入黑名单。    

(4) 在request的HTTP请求方法中,通过关键字参数proxies来传递http代理的配置信息。    

4.3.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:


欢迎 发表评论: