js 爬虫抓取网页数据(爬虫就是模拟人的访问操作来获取网页/App数据的一种程序)

优采云 发布时间: 2022-04-07 09:15

  js 爬虫抓取网页数据(爬虫就是模拟人的访问操作来获取网页/App数据的一种程序)

  摘要:爬虫是一种模拟人类访问操作以获取网页/App数据的程序。什么是爬行动物?

  简单来说,爬虫就是模拟人类访问操作来获取网页/App数据的程序。我们可以把互联网比作一个大的网络,爬虫(即网络爬虫)是在网络上爬行的蜘蛛。将网络的节点比作网页,爬取它相当于访问该页面并获取其信息。节点之间的连接可以比作网页与网页之间的链接关系,这样蜘蛛经过一个节点后,可以继续沿着节点连接爬行到达下一个节点,即继续通过一个网页获取后续网页,使得整个网页的节点都可以被蜘蛛爬取,并且可以抓取到网站的数据。

  很多人学习python,不知道从哪里开始。

  很多人学了python,掌握了基本的语法之后,都不知道去哪里找case入门了。

  许多做过案例研究的人不知道如何学习更高级的知识。

  所以针对这三类人,我会为大家提供一个很好的学习平台,免费的视频教程,电子书,还有课程的源码!??¤

  QQ群:961562169

  我们平时看到的搜索引擎、统计数据、旅游软件、聚合平台,都离不开网络爬虫。

  

  爬虫的应用领域有哪些?

  我们常见的应用场景的一个简单例子如下:

  1.搜索引擎抓取网页

  

  2.旅游软件通过爬虫抢票

  3.论坛或微博舆情监测。利用数据采集技术监测搜索引擎、新闻门户、论坛、博客、微博、微信、报纸、视频的舆情。说白了就是用来实现实时发现某个行业或地区的热点事件,比如青博舆情、百度舆情等。

  

  4.价格比较网站 应用。如今,各大电商平台针对活跃用户开展了各种秒杀活动和优惠券。同一种产品在不同的网购平台上可能会有不同的价格。那么这些网站是如何在几分钟甚至几秒内就知道某款产品在某站打折的呢?这就需要一个data采集系统(爬虫)来实时监控各个站的价格波动。首先采集商品的价格、型号、配置等,然后进行处理、分析和反馈。

  为什么要学习爬行?

  互联网的飞速发展带来了前所未有的便利,但也带来了许多以前没有遇到过的新问题。获取信息的成本越来越低,信息的种类和数量越来越多,但我们对信息的处理能力并没有提高,很难从信息中提取出我们感兴趣的东西。

  学习爬虫可以自动高效地获取我们在互联网上感兴趣的内容,帮助我们快速建立自己的信息知识库。

  如何完成一个轻量级爬虫

  这里简要概述三个步骤:获取数据-解析数据-存储数据。以下是完成这些步骤所涉及的工具供您参考。

  获取数据:urllib2、Requests、Selenium、aiohttp

  获取数据的工具:Chrome、Fiddler、MitmProxy、Appium

  解析数据:CSS 选择器、PyQuery、BeautifulSoup、Xpath、Re

  存储数据:MySQL、MongoDB、Redis

  

  

  工程爬行动物

  

  工程爬虫项目推荐:Scrapy、PySpider

  官方文档:,

  Github地址:,

  反爬虫措施和应对措施

  1.网页反爬虫-字体反爬虫

  开发者可以使用@font-face为网页指定字体,也可以调用自定义字体文件来渲染网页中的文字,网页中的文字就变成了对应的代码。这时候,通过一个简单的网页 采集 无法获取编码后的网页内容。

  对策:字体反爬相比其他反爬,难度属于比较初级的阶段,主要是处理起来比较麻烦,防御型的网站往往不止一个网站. 设置不同的字体加密防御系统,比如135配A方案,246配B方案,这需要一定的耐心去分析字体的规则,用Python解析字体文件,找到映射规则来解决。

  推荐工具:fontTools、百度字体编辑器()

  2.网页反爬虫-验证码

  验证码是一种公共的自动程序,用于区分用户是计算机还是人。常见的验证码包括:多位混合验证码、滑动验证码、点击验证码、旋转验证码等。

  对策:如果项目预算充足,可以连接专业的编码平台,减少90%的工作量;如果预算不足,可以使用华为云ModelArts完成模型搭建,无需编写一行代码

  推荐工具:华为云ModelArts、CC框架

  3.网页反爬虫-JS加密/混淆

  前端代码是公开的,那么加密有意义吗?是的,通过从代码中删除尽可能多的有意义的信息,例如注释、换行符、空格、代码减号、变量重命名、属性重命名(如果允许)以及无用的代码删除,以尽可能多地增加爬虫的数量可能 工程师阅读代码的成本。

  对策:对于轻度到中度混淆或混淆代码,可以阅读混淆代码,梳理加密逻辑,扣除可运行的Js代码,使用Python库调用完成加密参数的生成;对于严重混淆,使用AST语法树恢复混淆代码,去除无意义的垃圾代码,恢复清晰的加密逻辑,并使用Python库调用完成加密参数的生成。

  推荐工具:AST、PyExecJS

  4.APP反爬虫

  都2020年了,还有没有通过应用市场下载的不带壳的APP?除了外壳保护,常见的APP还应用单向或双向证书验证。简单的中间人攻击已经无法捕获APP数据包,学习APP逆向工程势在必行。

  对策:APP逆向工程需要学习的内容很多。这里简单总结一下抓不到的APP包(推荐工具:Frida、Xposed、IDA、jadx、Charles):

  【单向认证和双向认证】

  在单向验证的情况下,客户端验证证书,如果验证失败,则无法访问。

  在双向认证的情况下,当客户端验证证书时,服务器也会验证证书。如果证书的一端无法验证证书,则无法访问数据。缺点是服务器压力比较大

  处理方式:一般使用JustTrustMe,原理是Xpose Hook验证的API。

  【APP不走代理——如何保证APP不走代理?】

  (1)关闭代理服务器(fiddler等代理抓包工具)(2)用手机访问浏览器网页访问失败,判断代理无效(3)使用APP访问,正常访问确认APP不工作)通过代理访问网络

  处理方法:更换不基于代理类型的抓包工具(HTTP Analyzer V7--缺点不能在真机上使用,HTTP Debug Pro,基于手机的VPN上的HttpCanary);先hook-decompile看他是不是用的那个框架,然后针对性的hook-chicken劝说;iptables 强制拦截和转发

  【代理检测应用】

  附代理前APP访问正常。附加代理后,APP无法使用,显示网络错误。

  (1)代理检测(钩子代理检测方法)(2)证书检测(使用JustTrustMe)

  【双向认证APP】

  在双向认证的情况下,当客户端验证证书时,服务器也会验证证书。如果证书的一端无法验证证书,则无法访问数据。

  但是,要在双向认证APP中实现双向验证,一般应该在APP中配置服务器端的验证证书,所以我们可以在客户端找到一个服务器端的证书,我们只需要配置这个证书在提琴手。请求。

  ps:证书一般都有密码。需要反编译找到密码,然后导入系统,再从系统导出为.cer证书格式,然后在FiddlerScript中配置。

  什么是分布式爬虫?

  如果你已经学会了如何编写一个工程爬虫并有一些经验,那么你已经开始对爬虫架构有了一些经验。

  分布式爬虫的概念看起来很吓人。其实从简单的角度来说,就是将一个单机爬虫分布到多台机器上。主要关注消息阻塞处理、日志告警、数据完整性校验等问题。

  1亿级别以下的舆情数据,可以尝试学习Scrapy + Redis + MQ + Celery的组合,应付自如。

  如果是垂直领域的数据采集,可以专注于快速稳定的获取数据。毕竟在垂直领域的数据抓取中,爬虫与反爬虫的对抗最为激烈。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线