Python常见反爬虫机制解决方案

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python网络爬虫之如何伪装逃过反爬虫程序的方法

    有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如果用现有的爬虫代码,会被拒绝. 之前正常的爬虫代码如下: from urllib.request import urlopen ... html = urlopen(scrapeUrl) bsObj = BeautifulSoup(html.read(), "html.parser") 这

  • Python反爬虫伪装浏览器进行爬虫

    对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作 简单的直接添加请求头,将浏览器的信息在请求数据时传入: 打开浏览器--打开开发者模式--请求任意网站 如下图:找到请求的的名字,打开后查看headers栏,找到User-Agent,复制.然后添加到请求头中 代码如下: import requests url = 'https://www.baidu.com' headers ={ 'User-Agent':'Mo

  • python解决网站的反爬虫策略总结

    本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面). 1.从用户请求的Headers反爬虫是最常见的反爬虫策略. 伪装header

  • 详解python 破解网站反爬虫的两种简单方法

    最近在学爬虫时发现许多网站都有自己的反爬虫机制,这让我们没法直接对想要的数据进行爬取,于是了解这种反爬虫机制就会帮助我们找到解决方法. 常见的反爬虫机制有判别身份和IP限制两种,下面我们将一一来进行介绍. (一) 判别身份 首先我们看一个例子,看看到底什么时反爬虫. 我们还是以 豆瓣电影榜top250(https://movie.douban.com/top250) 为例.` import requests # 豆瓣电影榜top250的网址 url = 'https://movie.douban

  • python爬虫的一个常见简单js反爬详解

    前言 我们在写爬虫是遇到最多的应该就是js反爬了,今天分享一个比较常见的js反爬,这个我已经在多个网站上见到过了. 我把js反爬分为参数由js加密生成和js生成cookie等来操作浏览器这两部分,今天说的是第二种情况. 目标网站 列表页url:  http://www.hnrexian.com/archives/category/jk. 正常网站我们请求url会返回给我们网页数据内容等,看看这个网站返回给我们的是什么呢? 我们把相应中返回的js代码格式化一下,方便查看. < script typ

  • Python反爬虫技术之防止IP地址被封杀的讲解

    在使用爬虫爬取别的网站的数据的时候,如果爬取频次过快,或者因为一些别的原因,被对方网站识别出爬虫后,自己的IP地址就面临着被封杀的风险.一旦IP被封杀,那么爬虫就再也爬取不到数据了. 那么常见的更改爬虫IP的方法有哪些呢? 1,使用动态IP拨号器服务器. 动态IP拨号服务器的IP地址是可以动态修改的.其实动态IP拨号服务器并不是什么高大上的服务器,相反,属于配置很低的一种服务器.我们之所以使用动态IP拨号服务器,不是看中了它的计算能力,而是能够实现秒换IP. 动态IP拨号服务器有一个特点,就是每

  • python爬虫 urllib模块反爬虫机制UA详解

    方法: 使用urlencode函数 urllib.request.urlopen() import urllib.request import urllib.parse url = 'https://www.sogou.com/web?' #将get请求中url携带的参数封装至字典中 param = { 'query':'周杰伦' } #对url中的非ascii进行编码 param = urllib.parse.urlencode(param) #将编码后的数据值拼接回url中 url += p

  • Python常见反爬虫机制解决方案

    1.使用代理 适用情况:限制IP地址情况,也可解决由于"频繁点击"而需要输入验证码登陆的情况. 这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的.对于"频繁点击"的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉. proxies = {'http':'http://XX.XX.XX.XX:XXXX'} Requests: import requests response = requests.get(u

  • python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)

    因为评论有很多人说爬取不到,我强调几点 kv的格式应该是这样的: kv = {'cookie':'你复制的一长串cookie','user-agent':'Mozilla/5.0'} 注意都应该用 '' ,然后还有个英文的 逗号, kv写完要在后面的代码中添加 r = requests.get(url, headers=kv,timeout=30) 自己得先登录自己的淘宝账号才有自己登陆的cookie呀,没登录cookie当然没用 以下原博 本人是python新手,目前在看中国大学MOOC的嵩天

  • Python爬虫突破反爬虫机制知识点总结

    1.构建合理的HTTP请求标头. HTTP的请求头是一组属性和配置信息,当您发送一个请求到网络服务器时.因为浏览器和Python爬虫发送的请求头不同,反爬行器很可能会被检测到. 2.建立学习cookie. Cookie是一把双刃剑,有它不行,没有它更不行.站点将通过cookie来追踪你的访问情况,如果发现你有爬虫行为,将立即中断您的访问,例如,填写表格时速度过快,或在短时间内浏览大量网页.而且对cookies的正确处理,也可以避免许多采集问题,建议在收集网站的过程中,检查一下这些网站生成的coo

  • Python3爬虫学习之应对网站反爬虫机制的方法分析

    本文实例讲述了Python3爬虫学习之应对网站反爬虫机制的方法.分享给大家供大家参考,具体如下: 如何应对网站的反爬虫机制 在访问某些网站的时候,网站通常会用判断访问是否带有头文件来鉴别该访问是否为爬虫,用来作为反爬取的一种策略. 例如打开搜狐首页,先来看一下Chrome的头信息(F12打开开发者模式)如下: 如图,访问头信息中显示了浏览器以及系统的信息(headers所含信息众多,具体可自行查询) Python中urllib中的request模块提供了模拟浏览器访问的功能,代码如下: from

  • 浅谈Scrapy框架普通反爬虫机制的应对策略

    简单低级的爬虫速度快,伪装度低,如果没有反爬机制,它们可以很快的抓取大量数据,甚至因为请求过多,造成服务器不能正常工作.而伪装度高的爬虫爬取速度慢,对服务器造成的负担也相对较小. 爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史.而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走.然而,如果反爬机制过于严格,可能会误伤到真正的用户请求;如果既要和爬虫死磕,又要保证很低的误伤率,那么又会加大研发的成本. 简单低级的爬虫速度快,伪装度低,如果

  • 详解Selenium-webdriver绕开反爬虫机制的4种方法

    之前爬美团外卖后台的时候出现的问题,各种方式拖动验证码都无法成功,包括直接控制拉动,模拟人工轨迹的随机拖动都失败了,最后发现只要用chrome driver打开页面,哪怕手动登录也不可以,猜测driver肯定是直接被识别出来了.一开始尝试了改user agent等方式,仍然不行,由于其他项目就搁置了.今天爬淘宝生意参谋又出现这个问题,经百度才知道原来chrome driver的变量有一个特征码,网站可以直接根据特征码判断,经百度发现有4种方法可以解决,记录一下自己做的尝试. 1.mitproxy

  • Requests什么的通通爬不了的Python超强反爬虫方案!

    一.前言 一个非常强的反爬虫方案 -- 禁用所有 HTTP 1.x 的请求! 现在很多爬虫库其实对 HTTP/2.0 支持得不好,比如大名鼎鼎的 Python 库 -- requests,到现在为止还只支持 HTTP/1.1,啥时候支持 HTTP/2.0 还不知道. Scrapy 框架最新版本 2.5.0(2021.04.06 发布)加入了对 HTTP/2.0 的支持,但是官网明确提示,现在是实验性的功能,不推荐用到生产环境,原文如下: " HTTP/2 support in Scrapy is

  • 用python3 urllib破解有道翻译反爬虫机制详解

    前言 最近在学习python 爬虫方面的知识,网上有一博客专栏专门写爬虫方面的,看到用urllib请求有道翻译接口获取翻译结果.发现接口变化很大,用md5加了密,于是自己开始破解.加上网上的其他文章找源码方式并不是通用的,所有重新写一篇记录下. 爬取条件 要实现爬取的目标,首先要知道它的地址,请求参数,请求头,响应结果. 进行抓包分析 打开有道翻译的链接:http://fanyi.youdao.com/.然后在按f12 点击Network项.这时候就来到了网络监听窗口,在这个页面中发送的所有网络

  • Python中常见的反爬机制及其破解方法总结

    一.常见反爬机制及其破解方式 封禁IP,使用cookie等前面文章已经讲过 现在主要将下面的: ​ ~ 验证码 ​ -> 文字验证码 -> OCR(光学文字识别)-> 接口 / easyocr ​ 程序自己解决不了的问题就可以考虑使用三方接口(付费/免费) ​ -> 行为验证码 -> 超级鹰 ​ ~ 手机号+短信验证码 ​ -> 接码平台 ​ ~ 动态内容 ​ -> JavaScript逆向 -> 找到提供数据的API接口 ​ -> 手机抓接口 -&g

随机推荐