代理在爬虫中的应用主要是破解封IP这种反扒机制。
对于爬虫,许多门户网站都是对其有限制的,手段各不相同,像我的博客,就有封ip的反爬操作。
大概就是,某一个ip在一分钟之内访问了我20次以上,我这里默认将他视为爬虫程序。限制这个ip十分钟不可访问。
具体请移步《Thinkphp5使用redis限制网络数据爬虫访问》这篇文章中有详细的介绍。
其实,要破解我这种简单的限制很简单,使用代理就可以。3
那么,什么代理呢?
一:代理
代理实际上指的就是代理服务器,英文叫作proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给Web服务器,Web服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装,这就是代理的基本原理。
二:代理的作用
1:突破自身ip访问的限制
2:可以隐藏自身真是的ip,免受攻击。
三:代理相关的网站:
1:快代理(免费代理貌似只有http:www.kuaidaili.com/free/intr/1…
2:66免费代理网(www.66ip.cn/2632.html)
3:齐云代理(proxy.ip3366.net/free/ 这个有https代理)
四:代理类型
http:只能被应用到http协议对应的url中
https:只能被应用到https协议对应的url中
五:小试一下
我这里爬取的网址是:
这里刚好可以看到访问这个网址的ip
我这里使用快代理上边的代理网址,但是我没有找到https代理,我就寻思,咱能不能用http试一下子呢?
代码如下;
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2022/3/8 18:23
# @Author : camellia
# @Email : 805795955@qq.com
# @File : agent.py
# @Software: PyCharm
# 引用request模块
import requests
# UA伪装 将对应的User-Agent封装到一个字典中(浏览器标识去浏览器中用f12查看源代码获取就好了)
headers={
"User-Agent":'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 请求参数
query=''
# 1:指定url
url = 'https://www.baidu.com/s?wd=ip&ie=UTF-8'
# 这里用到了 request.get的第二个参数params
# 2:模拟网络请求链接
responce = requests.get(url=url, headers=headers,proxies={"https":"124.70.46.14:3128"})
# 3:获取响应数据
content = responce.text
# 4:持久化存储
with open('ip.html', 'w', encoding='utf-8') as fe:
fe.write(content)
print('爬取完成!')
使用http代理请求https链接报错:
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
During handling of the above exception, another exception occurred:
看来是不行。找一个https代理再试试。我尝试了一下齐云代理中的https代理
将上边程序中的ip改一下:
爬取成功,爬取下来的页面:
Ip确实显示在山东青岛
六:代理的匿名度
透明:服务器知道该次请求使用了代理,也知道请求对应的真是ip
匿名:知道使用了代理,不知道真实ip
高匿:不知道使用了代理,更不知道真实ip
以上大概就是 代理在爬虫中的应用,有好的建议,请在下方输入你的评论。