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解析xml模块封装代码
Feb 07 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
Django数据库表反向生成实例解析
Feb 06 Python
windows下python和pip安装教程
May 25 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
Django框架 querySet功能解析
Sep 04 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python requests设置代理的方法步骤
Feb 23 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
Python字符串的转义字符
Apr 07 Python
如何利用python实现Simhash算法
Jun 28 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
页面载入结束自动调用js函数示例
2013/09/23 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
2016/05/05 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
深入解析Python中的WSGI接口
2015/05/11 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python 中字典嵌套列表的方法
2018/07/03 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
人民调解协议书范本
2014/10/11 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android