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实现多线程下载文件的代码实例
Jun 01 Python
Python中的zip函数使用示例
Jan 29 Python
Python装饰器基础概念与用法详解
Dec 22 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
linux安装python修改默认python版本方法
Mar 31 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
Python类反射机制使用实例解析
Dec 30 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
Python openpyxl 插入折线图实例
Apr 17 Python
python中Django文件上传方法详解
Aug 05 Python
bat批处理之字符串操作的实现
Mar 16 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/07/17 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php魔术变量用法实例详解
2014/11/13 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
Python中的yield浅析
2014/06/16 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
高级Java程序员面试要点
2013/08/02 面试题
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
关于迟到的检讨书
2014/01/26 职场文书
八年级美术教学反思
2014/02/02 职场文书
企业挂职心得体会
2014/09/10 职场文书
财务部会计岗位职责
2015/02/03 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技