Python常见反爬虫机制解决方案


Posted in Python onJune 01, 2020

1、使用代理

适用情况:限制IP地址情况,也可解决由于“频繁点击”而需要输入验证码登陆的情况。

这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的。对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。

proxies = {'http':'http://XX.XX.XX.XX:XXXX'}
Requests:
 import requests
 response = requests.get(url=url, proxies=proxies)
Urllib2:
 import urllib2
 proxy_support = urllib2.ProxyHandler(proxies)
 opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
 urllib2.install_opener(opener) # 安装opener,此后调用urlopen()时都会使用安装过的opener对象
 response = urllib2.urlopen(url)

2、时间设置

适用情况:限制频率情况。

Requests,Urllib2都可以使用time库的sleep()函数:

import time
time.sleep(1)

3、伪装成浏览器,或者反“反盗链”

有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还

会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。

headers = {'User-Agent':'XXXXX'} # 伪装成浏览器访问,适用于拒绝爬虫的网站
headers = {'Referer':'XXXXX'}
headers = {'User-Agent':'XXXXX', 'Referer':'XXXXX'}
Requests:
 response = requests.get(url=url, headers=headers)
Urllib2:
 import urllib, urllib2  
 req = urllib2.Request(url=url, headers=headers)
 response = urllib2.urlopen(req)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
python爬虫实例详解
Jun 19 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
聊聊python中的循环遍历
Sep 07 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
python面向对象版学生信息管理系统
Jun 24 Python
解决python运行启动报错问题
Jun 01 #Python
利用python控制Autocad:pyautocad方式
Jun 01 #Python
Python 跨.py文件调用自定义函数说明
Jun 01 #Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 #Python
Python如何在main中调用函数内的函数方式
Jun 01 #Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 #Python
基于Python绘制个人足迹地图
Jun 01 #Python
You might like
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
Display SQL Server Version Information
2007/06/21 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
Angular模版驱动表单的使用总结
2018/05/05 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Python ATM功能实现代码实例
2020/03/19 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
贝佳斯官方网站:Borghese
2020/05/08 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
应届生会计电算化求职信
2013/10/03 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
总经理任命书范本
2014/06/05 职场文书
售房委托书
2014/08/30 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python