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 httplib,smtplib使用方法
Sep 06 Python
Python 调用VC++的动态链接库(DLL)
Sep 06 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
Python 中字符串拼接的多种方法
Jul 30 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
Django框架验证码用法实例分析
May 10 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Python使用type动态创建类操作示例
Feb 29 Python
Pycharm Git 设置方法
Sep 15 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
Terran历史背景
2020/03/14 星际争霸
PHP学习笔记之数组篇
2011/06/28 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
jquery中交替点击事件的实现代码
2014/02/14 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
Python之py2exe打包工具详解
2017/06/14 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
python同步两个文件夹下的内容
2019/08/29 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python实现五子棋程序
2020/04/24 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
华为c/c++笔试题
2016/01/25 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
学生出入校管理制度
2014/01/16 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
教师党员一句话承诺
2014/03/28 职场文书
成绩报告单家长评语
2014/12/30 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书