爬虫知识5:常见反爬虫机制——User-Agent和代理IP设置
常见反爬机制:
1、拒绝非浏览器的访问:可以检查请求头header中的User-agent、referer、cookies:
User-agent用来表示请求者的信息,可以搜集User-agent并保存,爬取过程中动态更换在User-agent,伪装成浏览器的形式
referer可以使用浏览器分析提取referer信息
需要登录才能操作的页面可以保留cookies,带着cookies信息登录
2、请求延时:在settings.py中设置DOWNLOAD_DELAY = n,n为延迟秒数,不要给别人的服务器造成压力。3、代理的使用: 因此可以动态设置下User-agent及代理。 两个步骤:
在middlewares.py中自定义类
在settings.py中,启用该DOWNLOADER_MIDDLEWARES
1、动态设置user-agent1)安装fake-useragent进入python目录,通过语句pip3 install fake-useragent安装包
2)scrapy框架中设置动态user-agent两个步骤:先自定义类,再应用类 步骤1:在middleware中自定义类MiddleWare自定义类的主要方法:
process_request(request,spider)
process_response(request,response,spider)
process_exception(resquest,exception,spider)
在request方法中写入一下语句,就可以看到不同的user-agent了。from fake_useragent import FakeUserAgent #需要安装
class Middleware_hh(object):
def __init__(self):
self.ua=FakeUserAgent()
def process_request(self,request,spider):
request.headers['USER_AGENT']=self.ua.random
print(request.headers['USER_AGENT'])可以看下列执行结果,已经可以看到不一样的user-agent
如果需要设置user-agent的使用数量,比如20次更换一次user-agent,可以使用以下程序:
步骤2:在setting.py中设置一下user-agent需要提前设置
自定义Middleware中的类后,需要在settings启用,比如我定义的是Middleware_hh的类。
3)requests模块中设置动态user-agentimport requests
import fake_useragent #需要安装
ua=fake_useragent.FakeUserAgent()#动态uer-agent设置
url='http://ip.cn/'
header_info={'User-Agent':ua.random}
rep=requests.get(url,headers=header_info)
print(rep.text)2、cookies的信息,请参关于自动考登录的博文。
3、关于动态设置代理ip几个步骤:
找免费的代理ip
爬取免费的代理ip,存档(本文介绍两个案例)
验证ip的有效性,保留有效ip
使用有效ip。
步骤1:找一些免费的代理网站,比如:http://www.xicidaili.com/http://www.66ip.cn步骤2:爬取代理网站的免费ip案例3-1 爬取http://www.66ip.cn网站的免费代理ip:可以通过两种方式获得:
直接爬取页面的ip
通过api接口获取ip
程序代码:
方式1:
方式2:
主程序:
案例3-2 爬取http://www.xicidaili.com网站的免费代理ip:
主程序:
步骤3:检验爬取的ip是否有效,案例中的第一个函数checkout_proxy
附:关于“由于目标计算机积极拒绝,无法连接。”的错误设置:刚开始我爬虫设置代理时遇到这个问题,解决方式:浏览器中点击设置------打开代理设置---局域网设置---对于本地地址不使用代理服务(打对勾)4、robots协议:
通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。robots的协议一般存储位置:根目录下,网址/robots.txt。如:
百度的robots协议:https://www.baidu.com/robots.txt。
京东的robots协议:https://www.jd.com/robots.txt
内容案例: 主要包含的参数语法:
User-agent:搜索引擎种类
Disallow:禁止爬取
Allow:允许爬取
Sitemap:网站资源地图,告知搜索引擎
Crawl-delay:爬取延时
Disallow:/ 代表禁止爬取所有资源
Disallow:/ abc 代表禁止爬取abc及其下的所有资源
Disallow:/ abc/ 代表禁止爬取abc其下的所有资源,但可以爬取abc
Disallow:/ *.png 代表禁止爬取所有png图片
Disallow:/ *?* 代表禁止爬取动态url
反爬虫的文章参考:https://www.cnblogs.com/bsdr/p/5151891.html
程序案例:案例3-1:https://pan.baidu.com/s/1Aufwd1e_f6OqMAOJdj4O3A 密码:l54u案例3-2:https://pan.baidu.com/s/1-zt7hqj3HyhcWljTrcUVyQ 密码:0g45
- 爬虫知识5:常见反爬虫机制——User-Agent和代理IP设置
- 常见反爬虫机制——User-Agent和代理IP设置
- python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)
- java给爬虫设置User-Agent(绕过最表面的反爬虫机制)
- 常见的User-Agent及免费代理IP网站
- 为爬虫设置User-Agent
- 干货|Python爬虫如何设置代理IP
- Python爬虫设置代理IP爬取知乎图片
- 这就是我的爬虫基本功!使用代理 IP和绕过反爬机制!
- [笔记]python爬虫学习笔记(三)——设置User Agent和代理IP
- Python爬虫技巧---设置代理IP
- selenium+python设置爬虫代理IP的方法
- Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫 从Apache2.2升级到Apache2.4后,发现原来用来限制部分I
- Python爬虫设置代理IP的方法(爬虫技巧)
- Python实现爬虫设置代理IP和伪装成浏览器的方法分享
- python爬虫的代理IP设置
- Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫
- Scrapy爬虫系列笔记之九:反爬虫之Useragent设置以及开源项目的结合_by_书訢
- Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫