返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >常见的反爬虫urllib技术分享
  • 831
分享到

常见的反爬虫urllib技术分享

2024-04-02 19:04:59 831人浏览 独家记忆
摘要

目录通过robots.txt来限制爬虫:通过User-Agent来控制访问:验证码:IP限制:cookie:js渲染:爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬

爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬虫行为以及反爬,今天就来介绍一下网页开发者常用的反爬手段。

通过robots.txt来限制爬虫:

爬虫都遵守着一个协议:robots.txt

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。

robots.txt应放置于网站的根目录下。

如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。

robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。

注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。

robots.txt允许使用类似”Disallow: *.gif”这样的通配符[1][2]。

解决方法:

这实际上只是一个”君子协议“,遵守与否,都在于爬虫的编写者。

通过User-Agent来控制访问:

无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers 这里面的大多数的字段都是浏览器向服务器”表明身份“用的
 

对于爬虫程序来说,最需要注意的字段就是:User-Agent

很多网站都会建立 user-agent白名单,只有属于正常范围的user-agent才能够正常访问。

解决方法:

在发送请求时使用该网站user-agent白名单的的UA

可以使用python的第三方模块fake_useragent 随机生成UA,需手动安装

>>> from fake_useragent import FakeUserAgent
>>> ua = FakeUserAgent()
>>> ua.random
'Mozilla/5.0 (windows NT 5.1) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/34.0.1866.237 Safari/537.36'

验证码:

最为经典的反爬虫策略当属“验证码”了。因为验证码是图片,用户登录时只需输入一次便可登录成功,而我们程序抓取数据过程中,需要不断的登
录,比如我们需要抓取1000个用户的个人信息,则需要填1000次验证码,而手动输入验证码是不现实的,所以验证码的出现曾经难倒了很多网络爬虫工程师。

解决方法:

  • 分析网站验证码机制,从网站后台或者前端获取验证码(文本形式),该方法只适用于少量网站,因为一般验证码我们很难拿到。
  • 利用图像识别技术,识别验证码文本(例如最近比较火的深度学习Tensorflow等)。
  • 往往一些网站不只有pc端,还有手机端网站,很有可能手机端是不包含验证码的。所以不妨试试手机端网站,也许会有意外收获

IP限制:

另外一种麻烦的反爬虫策略当属封ip和封账号了。本人初期曾经用一台机器抓取拉钩,导致短时间内账号被封,IP被封,所以遇到类似问题一定要多加小心。

解决方法:

  • 最简单的解决办法:限制程序抓取频率,每隔几秒登录一次(如果对抓取数量没有要求,则可以采用这种方法,如果想抓取大量数据,还不得抓取到猴年马月啊)。
  • 既然封账号封IP,那我就用多个账号、多台机器抓取呗,既解决了反爬虫问题,也相当于做了分流处理,降低单台机器带宽压力。
  • 事实证明,有些网站即使我们采用了1)2)方法,还是会被封,这种情况下我们只能去抓取代理IP了,可以写一个专门的爬虫程序用来抓取代理,用这些代理去抓取我们想要的数据。到此为止,基本上封账号、封IP的问题就可以解决了。

cookie:

通过cookie限制抓取信息,比如我们模拟登陆之后,想拿到登陆之后某页面信息,千万不要以为模拟登陆之后就所有页面都可以抓了,有时候还需要请求一些中间页面拿到特定cookie,然后才可以抓到我们需要的页面。
解决方法:

通过浏览器的F12查看器,观察具体整个过程都请求了哪些URL(主要包括HTML、JS、XHR),挨个试,试到成功为止。

JS渲染:

采用JS渲染页面。什么意思呢,就是返回的页面并不是直接请求得到,而是有一部分由JS操作DOM得到,所以那部分数据我们也拿不到咯。
解决方法:

  • 可以使用Phantomjs模拟浏览器请求返回渲染完JS的页面
  • 通过抓包抓取JS渲染的数据(不推荐)

以上就是常见的反爬虫urllib技术分享的详细内容,更多关于反爬虫urllib技术的资料请关注编程网其它相关文章!

--结束END--

本文标题: 常见的反爬虫urllib技术分享

本文链接: https://lsjlt.com/news/147309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 常见的反爬虫urllib技术分享
    目录通过robots.txt来限制爬虫:通过User-Agent来控制访问:验证码:IP限制:cookie:JS渲染:爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬...
    99+
    2024-04-02
  • Python爬虫技术栈 | urllib库&&urllib3库
    ❤️urllib库详解❤️ 每篇前言: 第一部分:urllib库 一、request模块:发送请求 1.urlopen() ...
    99+
    2023-09-10
    python 爬虫 urllib库urllib3库
  • 【Python3爬虫】常见反爬虫措施及解
    这一篇博客,是关于反反爬虫的,我会分享一些我遇到的反爬虫的措施,并且会分享我自己的解决办法。如果能对你有什么帮助的话,麻烦点一下推荐啦。   UserAgent中文名为用户代理,它使得服务器能够识别客户使用的操作系统及版本、CPU 类...
    99+
    2023-01-30
    爬虫 措施 常见
  • 爬虫中常见的反爬虫策略有哪些
    小编给大家分享一下爬虫中常见的反爬虫策略有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.IP封锁站点运行人员在分析日志时,有时会发现在同一时间段内有一个或...
    99+
    2023-06-20
  • Python爬虫和反爬技术过程详解
    目录一、浏览器模拟(Headers)如何找到浏览器信息打开浏览器,按F12(或者鼠标右键+检查)点击如下图所示的Network按钮按键盘Ctrl+R(MAC:Command+R)进行...
    99+
    2024-04-02
  • 常见的反爬虫机制有哪些
    这篇文章主要讲解了“常见的反爬虫机制有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常见的反爬虫机制有哪些”吧!对爬虫用户而言,网站的反爬行机制可以说是其头号敌人。反爬机制是一种防止爬虫...
    99+
    2023-06-20
  • 常见的反爬虫和应对方法
    0x01 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分...
    99+
    2023-01-30
    爬虫 常见 方法
  • 爬虫技术之分布式爬虫架构的讲解
    分布式爬虫架构并不是一开始就出现的。而是一个逐步演化的过程。 最开始入手写爬虫的时候,我们一般在个人计算机上完成爬虫的入门和开发,而在真实的生产环境,就不能用个人计算机来运行爬虫程序了,而是将爬虫程序部署在...
    99+
    2024-04-02
  • Python小知识 - Python爬虫进阶:如何克服反爬虫技术
    Python爬虫进阶:如何克服反爬虫技术 爬虫是一种按照一定的规则,自动抓取网页信息的程序。爬虫也叫网页蜘蛛、蚂蚁、小水滴,是一种基于特定算法的自动化程序,能够按照一定的规则自动的抓取网页中的信...
    99+
    2023-09-08
    Python YYDS
  • python爬虫urllib中的异常模块处理
    目录urllib中的异常处理url的组成部分URLErrorHTTPError简介Urllib.error 模块异常处理urllib中的异常处理 在我们写爬虫程序时,若出现url中的...
    99+
    2024-04-02
  • 技术分享 | 常见索引问题处理
    作者:EneTakane 数据库技术爱好者,爱可生 DBA 团队成员,负责 MySQL 日常问题处理以及数据库运维平台的问题排查,擅长 MySQL 主从复制及优化,喜欢钻研技术问题,还有不得不提的 warship。 本文来源:原创投稿 *...
    99+
    2019-04-16
    技术分享 | 常见索引问题处理
  • python爬虫的常见方式
    requests+bs4+lxml直接获取并解析html数据抓包ajax请求,使用requests获取并解析json数据反爬严重的网站,使用selenium爬取设置代理    a.urllib/requests/selenium+chrom...
    99+
    2023-01-31
    爬虫 常见 方式
  • 个人分享 | 我的常规爬虫流程
    阅读文本大概需要 3.6 分钟。其实,我鼓捣的有些也算不上是爬虫。首先,爬虫不是我的本职工作,我爬虫一般是为了一些有意思的东西,获取一些信息,或者是实现一些可以自动化完成的任务,比如签到。一般我的爬虫流程是这样的:浏览器访问待爬网页,并提前...
    99+
    2023-06-02
  • python反反爬虫技术限制连续请求时间处理
    目录前言用勾子函数根据缓存行为设置访问时间爬虫相关库1. 爬虫常用的测试网站:httpbin.org2. requests-cache为原有代码微创式添加缓存功能缓存的清空...
    99+
    2024-04-02
  • python爬虫urllib中的异常模块如何处理
    这篇文章主要介绍“python爬虫urllib中的异常模块如何处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python爬虫urllib中的异常模块如何处理”文章能帮助大家解决问题。urllib...
    99+
    2023-06-30
  • Golang中反射的常见用法分享
    目录根据类型做不同处理标准库 json 中的示例基本类型的反射数组类型的反射chan 反射map 反射迭代反射 map 对象slice 反射string 反射interface/Po...
    99+
    2023-01-04
    Golang反射常见用法 Golang反射用法 Golang反射
  • PHP中的爬虫技术指南
    随着互联网的迅猛发展和数据的爆炸式增长,人们越来越需要有效地获取和处理大量的网络数据。而网络爬虫技术便诞生了,它可以从互联网上自动采集数据,从而有效地提高数据获取的效率和准确性。而PHP作为一种强大的编程语言,也可以用于开发网络爬虫。本文将...
    99+
    2023-05-21
    PHP 爬虫 技术指南
  • 网络爬虫的常见方式
    本篇内容主要讲解“网络爬虫的常见方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“网络爬虫的常见方式”吧!IP代理是一个网络信息的中转站,代理客户的真实IP进行访问,代理IP有三种形式,普通IP...
    99+
    2023-06-20
  • 爬虫技术的类型有哪些
    这篇文章主要讲解了“爬虫技术的类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“爬虫技术的类型有哪些”吧! 聚焦网络爬虫是“面向特定主题需求...
    99+
    2024-04-02
  • Python爬虫抓取技术的门道
    web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展。然而,正所谓成也萧何败也萧何,开放的特性、搜索引擎以及简单易学的html、css技术使得web成为了互联网领域里最为流行和成熟的信息传播媒介;但如今作为...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作