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 socket 超时设置 errno 10054
Jul 01 Python
python返回昨天日期的方法
May 13 Python
python逆向入门教程
Jan 15 Python
python之pandas用法大全
Mar 13 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
Win8下python3.5.1安装教程
Jul 29 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
python实现电子产品商店
Feb 26 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
kafka-python 获取topic lag值方式
Dec 23 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
python 基于opencv实现图像增强
Dec 23 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
Python+Wordpress制作小说站
2017/04/14 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python 处理图片像素点的实例
2019/01/08 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
酒店个人培训自我鉴定
2013/12/11 职场文书
公司合作意向书
2014/04/01 职场文书
林肯就职演讲稿
2014/05/19 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书