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实现人人网登录示例分享
Jan 19 Python
Python多线程编程(八):使用Event实现线程间通信
Apr 05 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python统计单词出现的次数
Apr 04 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python获取对象属性的几种方式小结
Mar 12 Python
python实现简单俄罗斯方块
Mar 13 Python
django使用JWT保存用户登录信息
Apr 22 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脚本代码
2011/02/19 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
python实现比较两段文本不同之处的方法
2015/05/30 Python
python3.5仿微软计算器程序
2020/03/30 Python
python中模块的__all__属性详解
2017/10/26 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
师范大学毕业自我鉴定
2013/11/21 职场文书
库房管理员岗位职责
2014/03/09 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
Nginx反向代理学习实例教程
2021/10/24 Servers
Sql Server之数据类型详解
2022/02/28 SQL Server