精华内容
下载资源
问答
  • 爬虫反爬之cookie
    千次阅读
    2020-10-06 14:10:55

    爬取某些网页需要携带cookie才可以进行访问
    携带cookie一般有两种方式:
    手动设置cookie:

    #在header中携带cookie
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'"cookie":""
    }
    

    自动获取cookie:

    #使用requests模块自带的Session
    # 爬取雪球网主页
    
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    }
    # 实例化一个session对象
    s = requests.Session()
    first_url = 'https://xueqiu.com/'
    # 通过session对象进行页面的请求
    s.get(first_url,headers=headers)
    
    # 雪球网热门咨询url
    url = 'https://xueqiu.com/statuses/hot/listV2.json?since_id=-1&max_id=110605&size=15'
    json_text = s.get(url,headers=headers).json()
    
    更多相关内容
  • Python爬虫反爬方法

    2021-10-12 21:21:09
    · 4开头,比如403表示爬虫被网站封锁 · 5开头表示服务器出问题 本篇文章主要讲当遇到返回值出现403解决方法: 例如: import requests url='http://www.dianping.com/shanghai/hotel/p1' resp=requests.get(url) ...

    Response后面带有的状态码:

    · 2开头表示访问正常
    · 4开头,比如403表示爬虫被网站封锁
    · 5开头表示服务器出问题

    本篇文章主要讲当遇到返回值出现403解决方法:
    例如:

    import requests
    url='http://www.dianping.com/shanghai/hotel/p1'
    resp=requests.get(url)
    resp
    

    在这里插入图片描述

    反爬方法:

    requests.get(url,headers,cookies,params,proxies)

    1.伪装请求头headers
    2.加cookies
    3.headers中加referer
    4.使用代理IP,手机热点和付费代理,付费代理比如阿布云
    5.限制访问速度time.sleeo(1)

    1.伪装请求头headers

    打开目标网站——F12进入开发者工具——Network——随便打开一个加载出的文件——找到Request Headers下的User-Agent:并复制到代码的headers
    在这里插入图片描述
    改进后的爬虫:

    import requests
    url='http://www.dianping.com/shanghai/hotel/p1'
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36'}   //在开发者工具中寻找headers参数,并整理成字典格式
    resp=requests.get(url,headers=headers)
    resp
    

    恢复正常值:
    在这里插入图片描述

    展开全文
  • python 爬虫反爬策略

    2021-01-20 11:19:38
    python 爬虫反爬策略 爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬虫行为以及反爬,今天就来介绍一下网页开发者常用的反爬手段。 1.通过user-agent客户端标识来判断是不是爬虫 解决方法:封装请求头:user-...
  • 爬虫反爬机制及反爬策略

    千次阅读 2020-10-19 15:49:35
    简单的爬虫在抓取网站数据的时候,因为对网站访问过于频繁,给服务器造成过大的压力,容易使网站崩溃,因此网站维护者会通过一些手段避免爬虫的访问,以下是几种常见的反爬虫和反反爬虫策略: 关于网站动态加载的...

    参考:https://www.cnblogs.com/LLBFWH/articles/10902533.html

    爬虫是一种模拟浏览器对网站发起请求,获取数据的方法。简单的爬虫在抓取网站数据的时候,因为对网站访问过于频繁,给服务器造成过大的压力,容易使网站崩溃,因此网站维护者会通过一些手段避免爬虫的访问,以下是几种常见的反爬虫和反反爬虫策略:
    在这里插入图片描述

    关于网站动态加载的方法,还能一种反反爬虫的方法:找到其api的接口,这里有一个爬取B站视频信息的实例就是使用的这种方法,地址:https://github.com/iszoop/BilibiliSpider

    爬虫进阶:反爬策略的应对机制

    爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史。而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走。然而,如果反爬机制过于严格,可能会误伤到真正的用户请求;如果既要和爬虫死磕,又要保证很低的误伤率,那么又会加大研发的成本。

    简单低级的爬虫速度快,伪装度低,如果没有反爬机制,它们可以很快的抓取大量数据,甚至因为请求过多,造成服务器不能正常工作。而伪装度高的爬虫爬取速度慢,对服务器造成的负担也相对较小。所以,网站反爬的重点也是那种简单粗暴的爬虫,反爬机制也会允许伪装度高的爬虫,获得数据。毕竟伪装度很高的爬虫与真实用户也就没有太大差别了。

    这篇文章主要讨论使用 Scrapy 框架时,如何应对普通的反爬机制。

    header校验

    最简单的反爬机制,就是检查 HTTP 请求的 Headers 信息,包括 User-Agent, Referer、Cookies 等。

    User-Agent

    在每次请求中,随机选取一个真实浏览器的 User-Agent。

    Referer

    Referer 是检查此请求由哪里来,通常可以做图片的盗链判断。在 Scrapy 中,如果某个页面 url 是通过之前爬取的页面提取到,Scrapy 会自动把之前爬取的页面 url 作为 Referfer。也可以通过上面的方式自己定义 Referfer 字段。

    Cookies

    网站可能会检测 Cookie 中 session_id 的使用次数,如果超过限制,就触发反爬策略。所以可以在 Scrapy 中设置 COOKIES_ENABLED = False让请求不带 Cookies。

    也有网站强制开启 Cookis,这时就要麻烦一点了。可以另写一个简单的爬虫,定时向目标网站发送不带 Cookies 的请求,提取响应中 Set-cookie 字段信息并保存。爬取网页时,把存储起来的 Cookies 带入 Headers 中。

    X-Forwarded-For

    在请求头中添加 X-Forwarded-For 字段,将自己申明为一个透明的代理服务器,一些网站对代理服务器会手软一些。
    X-Forwarded-For 头一般格式如下X-Forwarded-For: client1, proxy1, proxy2
    这里将 client1,proxy1 设置为随机 IP 地址,把自己的请求伪装成代理的随机 IP 产生的请求。然而由于 X-Forwarded-For 可以随意篡改,很多网站并不会信任这个值。

    限制 IP 的请求数量

    如果某一 IP 的请求速度过快,就触发反爬机制。当然可以通过放慢爬取速度绕过,这要以爬取时间大大增长为代价。另一种方法就是添加代理。
    request.meta['proxy'] = 'http://proxy_host:proxy_port

    然后再每次请求时使用不同的代理 IP。然而问题是如何获取大量的代理 IP?

    可以自己写一个 IP 代理获取和维护系统,定时从各种披露免费代理 IP 的网站爬取免费 IP 代理,然后定时扫描这些 IP 和端口是否可用,将不可用的代理 IP 及时清理。这样就有一个动态的代理库,每次请求再从库中随机选择一个代理。然而这个方案的缺点也很明显,开发代理获取和维护系统本身就很费时费力,并且这种免费代理的数量并不多,而且稳定性都比较差。如果必须要用到代理,也可以去买一些稳定的代理服务。这些服务大多会用到带认证的代理。

    动态代理

    现在越来越多的网站使用 ajax 动态加载内容,这时候可以先截取 ajax 请求分析一下,有可能根据 ajax 请求构造出相应的 API 请求的 URL 就可以直接获取想要的内容,通常是 json 格式,反而还不用去解析 HTML。

    然而,很多时候 ajax 请求都会经过后端鉴权,不能直接构造 URL 获取。这时就可以通过 PhantomJS+Selenium 模拟浏览器行为,抓取经过 js 渲染后的页面。具体可以参考:

    需要注意的是,使用 Selenium 后,请求不再由 Scrapy 的 Downloader 执行,所以之前添加的请求头等信息都会失效,需要在 Selenium 中重新添加

    展开全文
  • Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失败、没有权限等原因,如果去伪造一个请求头是可以避开得,不过如果短时间内频繁使用同一个User-Agent访问可能会被检测出来导致...

    常见得反爬机制及解决办法

    1、针对请求头做出得反爬

    简介:网站通过去检查headers中的User-Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失败、没有权限等原因,如果去伪造一个请求头是可以避开得,不过如果短时间内频繁使用同一个User-Agent访问可能会被检测出来导致被封掉爬虫

    解决办法:通过fake_useragent构造随机请求头

    第一步:下载fake_useragent

    可以直接在cmd当中输入:

    pip install fake-useragent

    接下来设置代码如下:

    import requests
    from fake_useragent import UserAgent
    import random  #随机模块
    ua = UserAgent()  # 创建User-Agent对象
    useragent = ua.random
    headers = {'User-Agent': useragent}
    

    到这里得时候其实已经写好了,但肯定有小伙伴会想着去测试一下是不是真的自己使用了随机请求头那么我们去访问  http://httpbin.org/headers 看下返回得请求头数据

    第二步:验证请求头

    import requests
    from fake_useragent import UserAgent
    import random  #随机模块
    ua = UserAgent()  # 创建User-Agent对象
    useragent = ua.random  #随机使用请求头
    headers = {'User-Agent': useragent}
    url='http://httpbin.org/headers'
    renoes=requests.get(url,headers=headers)
    print(renoes.text)

    运行两次结果如下 

     可以发现请求头已经发生了变化并且每次不一样

    补充说明一点:

    在使用fake_useragent有时候会报错第一个原因可能是UserAgent列表发生了变动,而本地UserAgent的列表未更新所导致

    解决方法可以参考这篇文章 

    (21条消息) 解决fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached问题_一条会编程的鱼-CSDN博客https://blog.csdn.net/weixin_43581288/article/details/106529656?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163523713016780357226389%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163523713016780357226389&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-106529656.first_rank_v2_pc_rank_v29&utm_term=fake_useragent.errors.FakeUserAgentError%3A+Maximum+amount+of+retries+reached&spm=1018.2226.3001.4187

    如果通过上面那篇文章还是没有解决报错可以参考下面这篇

    (21条消息) 简单修改setting文件,解决fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached_大河的博客-CSDN博客https://blog.csdn.net/qq_45773419/article/details/119063825?spm=1001.2014.3001.5506

    然后得话还有一个要注意得地,用这个方法爬取某些网站得时候获取网站源代码,你会发现获取得竟然是一个提示,提示说浏览器版本太老啦,其实这个原因就是fake_useragent里面浏览器版本确实挺低得,遇到这种情况用自己得浏览器请求头就可以解决,可以这样写

    import requests
    import random  #随机模块
    #这个列表里面存放你自己收集来得请求头,下面得请求头是我用fake_useragent随机生成得,仅用来做演示如果直接使用还是有可能会提示浏览器版本低
    UserAgents=[
    'Mozilla/5.0 (Windows x86; rv:19.0) Gecko/20100101 Firefox/19.0',
    'Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36',
    'Mozilla/5.0 (Microsoft Windows NT 6.2.9200.0); rv:22.0) Gecko/20130405 Firefox/22.0',
    'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36'
    ]
    user_agent=random.choice(UserAgents)
    headers = {'User-Agent':user_agent}
    url='http://httpbin.org/headers'
    renoes=requests.get(url,headers=headers)
    print(renoes.text)

     2、针对ip做出得反爬

    简介:网站后台检测到IP频繁访问,从而封掉IP地址

    解决办法:使用代理IP 或者构建IP代理池

     使用代理IP的话个人是比较推荐快代理的隧道代理 快代理 - 企业级代理云服务提供商 (kuaidaili.com)

    原因嘛就是可以每次请求更换IP地址配合上面说的随机请求头更加保险

    当然设置起来也是很简单的他们官方有专门的技术文档,在代码样例里面可以看到也是支持下载代码到本地 

     

    3、账号封禁

    简介:有的网站必须要求登录账号才能继续访问,如果我们用一个账号爬取过于频繁就会导致这个账号被封禁

    解决办法:使用接码平台注册账号(这里不过多讲解具体操作,自己百度一下吧~)

    4、处理验证码

    简介:我们在爬取一些网站的时候它们并不是静态页面,而是通过Ajax交互来异步更新网页

    解决办法:分析其JS接口、使用selenium模拟浏览器来获取数据(后面得话都是将如何用selenium获取数据,因为分析JS接口有些网站会加密本人目前暂时不会JS逆向,下次一定补上)

    1、处理普通的图像验证码

    列如: 

    这种的话可以使用tesseract这个库去识别,但是吧这样费时费力而且识别准确度不高不如直接动用打码平台快,可以使用超级鹰打码平台便宜速度还快

    处理方法参考我写的另外一篇文章:

    超级鹰的使用方式_m0_59874815的博客-CSDN博客首先肯定要有一个账号嘛超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com)注册我觉得没啥好说的小伙伴门自己来哈,注册好账号之后我们点击开发文档,选择自己的语言我这里选择的是python点击下载之后得到的是一个压缩文件需要解压我们点击这个文件即可其它不用管这里更换为自己的账号密码,最后的软件ID如下图获取这里需要注意的是由于是python3的版本我们还需要在print后面加上()到这里就差...https://blog.csdn.net/m0_59874815/article/details/121007373

    2、处理图像识别

    列如:

     这种我依然使用的超级鹰打码,不过的话有些图片实在是太模糊识别成功率吧~不会太高不过勉强能用

    处理方法参考我写的另外一篇文章:

    使用python+selenium超级鹰破解图像识别验证码_m0_59874815的博客-CSDN博客大家做爬虫的时候肯定会遇到很多验证码列如本文所指的图像识别:我在爬取拉勾网的时候过于频繁被跳转到了验证系统,真是令人头大url=安全访问验证-拉勾网https://sec.lagou.com/verify.html?e=2&f=https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=我们需要先点击这里的验证按钮之后就会直接跳出图像验证码,在识别完成之后点击...https://blog.csdn.net/m0_59874815/article/details/121048996

    3、处理滑块验证 

     这种我们使用opencv来识别缺口从而模拟拖动

    处理方法如下:

    selenium+opencv破解滑块验证码_m0_59874815的博客-CSDN博客https://blog.csdn.net/m0_59874815/article/details/121195481?spm=1001.2014.3001.5501

    4、使用selenium获取cookie,并且携带cookie信息登录从而避免再次认证

    之前我们不是已经介绍了验证码如何处理嘛,那我们第一次模拟登录之后下一次总不能在继续识别验证码之后在登陆吧,这样很烧钱得呀(超级鹰识别要钱,虽然不贵但那也是钱嘛)而且还不能保证成功率,所以我们模拟登录之后需要获取其cookie信息下次在登录直接携带即可

    处理方法参考我写的另外一篇文章:

    selenium获取cookie并携带模拟登录_m0_59874815的博客-CSDN博客前言:有小伙伴可能会觉得明明F12在开发者选项里面就能获取到cookie信息为啥还要专门写一个程序去获取,这不多此一举嘛其实并不是哟,首先呢一般你直接登录之后得cookie信息都是不完整得只有一条而且大部分都是加密过得,哪怕我们假设它是完整得你直接复制之后selenium也接受不了,因为直接复制得格式不是selenium要求的你再去转换格式不得很麻烦呀不多废话哈切入正题,这次测试得目标网站为QQ空间 https://mail.qq.com/1、获取cookie信息先定义前面...https://blog.csdn.net/m0_59874815/article/details/121183959

    好了反爬整合就写到这里拉,以后想起啥在补充吧

    声明

    本文仅限于做技术交流学习,请勿用作任何非法用途!

    展开全文
  • Python爬虫反爬策略(一)

    千次阅读 2018-09-25 21:39:38
    好久没有更新博客了,心里空落落的,这次分享我的Python爬虫反爬策略三部曲,拥有这三步曲就可以在爬虫界立足了,哈哈哈~~~~~~ 浏览器伪装 IP代理池和用户代理池构建 动态页面加载解决方法 网站反爬机制常用的...
  • 爬虫反爬与反爬破解总结

    千次阅读 2019-02-19 16:12:17
    这里将自己收集的,遇到的反爬机制进行简单的记录和简单的分析,如果有大佬路过,看到理解不正确的地方,希望可以指出来,学习进步,在此感激不尽。 正文 最基础的记录一下标题 1.header反爬 抓包copy一份,header...
  • 反爬常见反爬通过User-Agent来反爬通过Referer来反爬通过Cookie来反爬通过js来反爬通过验证码验证行为来反爬通过ip地址来反爬通过自定义字体来反爬通过css样式来反爬js2py模块的使用js2py简介简单使用案例:人人网...
  • 网站有没有反爬,如果你没有用爬虫抓取过,你是不可能知道的。就算要测试,你还要尝试不同的delay。如果设置的 delay 在网站的反爬频率外,那就测不出来。如果在频率内,那就被封。或者封ip,或者封账号。如果一定要...
  • Python网络爬虫反爬破解策略实战

    千次阅读 2017-09-21 17:42:39
    我们经常会写一 些网络爬虫,想必大家都会有一个感受,写爬虫虽然不难,但是反爬处理却很难,因为现在大部分的网站都有自己的反爬机制,所以我们要爬取这些数据会比较难。但是,每一种反爬机制其实我们都会有相应的...
  • 参考这篇文件 转载链接:http://www.codexiu.cn/python/blog/26356/ 转载于:https://www.cnblogs.com/fh-fendou/p/7639953.html
  • 爬虫反爬爬虫:自动获取网站数据的程序,关键是批量的获取。反爬虫:使用技术手段防止爬虫程序的方法误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封ip,只会...
  • 爬虫反爬措施应对

    2019-11-19 16:37:41
    爬虫反爬措施应对 请求头headers user-agent: fake_useragent cookie: referer检测 cookie池维护及调度 GitHub 开源项目 https://github.com/Python3WebSpider/CookiesPool 爬取频率限制 由于爬虫发起请求的频率过...
  • 爬虫常见的反爬措施有哪些

    千次阅读 2020-12-08 14:08:05
    爬虫常见的反爬措施有三种:1、header头部信息解决方法:加User-Agent值:如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫,拒绝访问,解决办法如下:headers={'...
  • 网站做了很多反爬虫工作,爬起来有些艰难,本文详细介绍了python解决网站的反爬虫策略,有需要的小伙伴可以参考下。
  • Python爬虫反爬之路开始啦
  • 爬虫中常见的反爬手段和解决方法

    千次阅读 2021-11-26 11:21:12
    了解常见基于爬虫行为进行反爬 了解常见基于数据加密进行反爬 一、反爬的三个方向 基于身份识别进行反爬 基于爬虫行为进行反爬 基于数据加密进行反爬 二、常见基于身份识别进行反爬 1. 通过headers字段来反爬 ...
  • 爬虫获取m3u8视频流数据 现在的视频网站大多都是通过视频流的方式来传输数据,如果想要使用爬虫来获取数据的话,就需要获取每一个流视频的url 我们发现video标签中的url并不能直接访问,那么这肯定不是视频地址的链接,...
  • 记录常见反爬的处理方法
  • 爬虫-反爬’知多少

    2020-04-09 20:49:06
    什么是爬虫? 网络时代,有一种网络程序,俗称网络机器人。它可以按照一定的规则代替人们自动地在互联网中进行数据信息的采集与整理,这就是所谓的【爬虫】。 什么是反爬虫? 反爬虫就是和爬虫抗衡。减少被爬取的...
  • 爬虫反爬系列2-字体加密 一个练习爬虫技巧的网站: http://glidedsky.com/ 镀金的天空是一个互联网技能认证网站,这是一个公开的爬虫联系平台(侵权删) 那么这种网站就算是通过selenium也是无法获取真是数据的 字体...
  • 爬虫反爬策略和应对方案

    千次阅读 2020-06-22 14:28:02
    参考
  • 文章目录爬虫反爬随机UserAgent获取随机UserAgent代理池获取代理池使用代理池 爬虫反爬 很多网站都有反爬的措施,为了防止反爬,我们可以使用的方法有很多,今天我们就一起来学习一个最常用的反爬方式:添加随机...
  • 一、通用爬虫 通用爬虫一般有以下通用特性: 爬取大量(一般来说是无限)的网站而不是特定的一些网站。 不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的。相反,其会限制爬取的时间及数量。 在逻辑...
  • 反爬技术 1、headers请求头协议 可以在每个网页的这里找到: 这里的Request Headers就可以找到我们需要加上的请求头信息,使用requests模块一般情况下加上’User-Agent’就行了。下面对请求头信息里的几个部分做一...
  • 同一个cookie多次请求就会频繁,但是没有太多可用的cookie,这种情况怎么办?
  • Python爬虫反爬的一种方式

    千次阅读 2019-03-16 14:38:20
    网页异步加载: 通过把异步加载的信息的某些关键字符串作为下一个url的成分一部分, 来实现反爬措施.
  • 反爬方式的种类 1、判断请求头来进行反爬 这是很早期的网站进行的反爬方式... 网页中设置一些陷阱(正常用户访问不到但是爬虫可以访问到) 解决办法:分析网页,避开这些特殊陷阱 请求间隔太短,返回相同的数据解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,138
精华内容 6,455
关键字:

爬虫反爬