爬虫那些事

什么是反爬

网站采取的技术措施,用于防止爬虫程序自动化地抓取其网页内容。

爬虫用途

数据分析

云合数据  基于机器学习对各长视频平台、各频道节目播放数据进行统计分析的数据平台。

抖查查 直播电商短视频大数据分析平台。

数据搬运/采集

去哪儿网 获取各个航司官网机票价格在网站上展示。

抓弹幕,抓评价,抓短视频,到自己产品内播放/使用。

舆情监控

秒杀抢购

常见的反爬方式

User-Agent

网络请求中,User-Agent 是表明身份的一种方式,网站可以通过User-Agent来判断用户是使用什么浏览器访问。不同浏览器的User-Agent是不一样的,但这个基本没啥用。

IP限制

如果是同一个客户端访问此网站服务器的次数过多就会将其识别为爬虫,

因而,限制其客户端 ip 的访问。这样的限制给我们的爬虫带来了麻烦,所以使用代理 ip 在爬虫中是非常有必要的。

字体反爬

字体反爬也就是自定义字体反爬,通过调用自定义的ttf文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容。

字体是画出来的,但是知道了画的什么字做一个映射同样可以破解。

随机字体每次请求的字体文件到不一样 比如1可以是1也可以是丨也可以是l 。

验证码

顶象

geetest极验

反反爬

xx

以xx航空为例(jetstar.com)。

加密js 解析加密逻辑是一个非常需要耐心的事情。有的加密需要弄几周才能破解。

捷星主要请求流程

只有用户拿到setcookie 那次请求中正确的cookie才能获取机票价格,请求机票价格页面所需的cookie ↓

sensor_data,获取可用的cookie;

通过阅读上面的js发现,加密流程主要分为

  • canvas帆布指纹。

  • 鼠标轨迹及行为轨迹,以及轨迹相关联的参数,这个是核心风控部。

  • ja3指纹,

  • 各种浏览器信息检测--这里扩展下phantomjs无界面浏览器 (现在真的没啥用)

  • 未知细节 控制并发数量的。

canvas帆布指纹

浏览器在执行其功能时会收集各种信息。当这些信息中的某些被用于识别网站用户时,这被称为浏览器指纹。比如JavaScript动态绘制图形,将这个Canvas进行Base64编码,最后生成Base64编码的Hash值就是Canvas指纹。

Canvas 指纹识别利用浏览器的 Canvas API 绘制不可见图像,并提取持久的长期指纹,而无需用户的知情。

就这个就足够干掉大部分无头的了

Canvas 指纹识别的优缺点:

优点:

有效的跟踪。Canvas 指纹识别比传统的 Cookie 提供了更持久和准确的用户跟踪方法。

难以检测。用户通常不知道 Canvas 指纹识别,因此它通常不会被检测到和阻止。

缺点:

隐私问题。Canvas 指纹识别引发了严重的隐私问题,因为它允许网站在没有用户同意的情况下收集用户的详细信息。

用户画像。这允许创建详细的用户画像,可以用于有针对性的广告或其他目的,而无需用户同意。

phantomjs无界面浏览器检测

navigator.plugins

他是在一个浏览器内插件数组。 其中包括Flash,ActiveX。所以正常浏览器navigator.plugins数量一定大于1

全局属性

PhantomJS 会暴露在全局对象两个属性:window.callPhantom window._phantom。

检测phantomjs的方式很多很多,综上所述想用phantomjs无界面浏览器破解难上加难。

用户行为

ja3指纹

只要是对tls关键信息进行加密生成指纹 可以参考👉🏻 https://www.cnblogs.com/zichliang/p/17491838.html

chrome无头浏览器 

这是一种在无需显示headless的环境下运行 Chrome 浏览器的方式。从本质上来说,就是不用 chrome 浏览器来运行 Chrome 的功能。

无头浏览器的工作方式与常规浏览器几乎相同,只是它们在服务器端运行,而不是在桌面端。这意味着你可以在你的服务器上运行它,而不需要一个显示器或者一个物理机器。

当无头浏览器被启动时,它会创建一个虚拟的浏览器环境,这个环境和真实的浏览器环境在功能上是一样的,它可以解析HTML,执行JavaScript,加载CSS,甚至可以处理复杂的用户交互,例如点击,滚动等。

无头浏览器接收到指令后,会模拟用户行为,例如访问网页,点击按钮,填写表单等。这些操作都是通过编程语言的API实现的,这些API可以直接操控浏览器行为。例如,你可以编写一个脚本,让无头浏览器自动访问一个网页,然后点击某个按钮,或者填写并提交一个表单。

在执行完所有指令后,无头浏览器会返回结果。这些结果可以是网页的HTML代码,也可以是网页的截图,或者是其他的数据。此外,无头浏览器还可以提供页面的性能数据,例如页面加载时间,资源加载时间等。

无头浏览器环境流程

比如淘宝滑块之类的操作,完全可以交给浏览器去操作。 

Puppeteer

https://github.com/puppeteer/puppeteer

Puppeteer是一个由Google开发的Node.js库,它提供了一套用于控制headless Chrome或Chromium浏览器的API。它可以模拟用户在浏览器中的操作行为,如点击、填写表单、截图等,同时还可以让开发者获取到浏览器渲染后的HTML内容。它提供了一套高级的 API,使得浏览器操作变得简单和可靠。主要包括: 自动化控制、页面操控、网络请求拦截、页面截图和 PDF 生成、自动化测试 等一系列操作


Puppeteer
Selenium
开发团队GoogleThoughtworks
支持的浏览器仅支持Chrome支持Chrome,Safari,Firefox 等等
工作原理直接使用Chrome DevTools Protocol通过Webdriver 客户端封装各种浏览器协议,比如chromedriver
支持的语言NodeJS支持JS,Python 、Java 等多种语言开发
是否支持headless支持支持
开发难易程度安装简单相比Puppeteer,稍微复杂,需要安装ChromeDriver,且需要考虑版本兼容。
开发社区活跃程度从2017年活跃至今从2004年活跃至今,时间上累计的活跃优势
问题
  1. 渲染性能问题:由于无头浏览器需要加载并运行整个网页的所有资源,包括 JavaScript、CSS 和图像等,这可能会导致渲染性能问题,特别是在资源有限的环境下。解决这个问题的一种方法是通过配置无头浏览器来禁止加载某些非必要的资源,比如图像和样式表。

  2. 异步操作处理问题:现代网页常常包含大量的异步操作,如 AJAX 请求、延迟加载的元素等。

    1. 粗糙方案:如果业务对时延要求不高,且每个网页页面元素差异不大,可以预估个一定能加载完的时间去Sleep。

    2. 精细方案:

      1. 根据业务场景用WaitVisible、WaitReady、networkidle 等方式判断。但该方案只针对单个业务场景有效,覆盖不了全场景。

  3. 代理问题:需要定期切换代理/每一个请求指定代理,本身无头浏览器不具备这个能力。

    1. 插件方式灵活切换代理,插件接受控制台指令,

  如何开发浏览器插件 https://developer.chrome.com/docs/extensions/get-started/tutorial/hello-world?hl=zh-cn

 
{ "name": "Hello Extensions", "description": "Base Level Extension", "version": "1.0", "manifest_version": 3, "action": { "default_popup": "hello.html", "default_icon": "hello_extensions.png" } }

"奇淫巧计"

使用搜索引擎破解反爬-伪装搜索引擎

使用搜索引擎破解(绕开)反爬!!!

你没有听错 用搜索引擎破解反爬,不是用搜索引擎搜搜如何破解反爬,而是通过搜索引擎绕开反爬。

首先反手一个 site:jetstar.com

下图就有绕开反爬的关键信息!!!! 下图有什么问题

utm_source和utm_medium是用于追踪和分析网站流量来源的参数。它们通常在URL中作为查询参数的形式出现,并在用户点击链接或广告时自动添加到URL中。

  • utm_source:表示流量来源的标识符。它用于指示用户是从哪个网站、搜索引擎、广告活动或其他渠道访问的。例如,utm_source可以是一个特定的网站域名,如google.com。

  • utm_medium:表示流量来源的媒介类型。它用于指示用户是通过什么方式访问的,如广告、搜索引擎、社交媒体等。例如,utm_medium可以是cpc(点击付费广告)、organic(自然搜索结果)或social(社交媒体)。

通过谷歌搜索可以捞取一些带有utm_source 和utm_medium的捷星航空链接,显然捷星航空有对一些来源的utm_source进行反爬豁免。

2周之后直接被封了,所有的utm_source 都不能绕开了。 可能是被人家发现了。

但这个方法真的好用 hhhh 好多网站都是这样。

终极大招-(没想好名字)

一劳永逸,怎么升级怎么检测用户行为浏览器信息都可以破解,过于敏感这里就不展示了,这种方法有很多限制条件,只有满足条件的公司才可以使用。

小程序

举个例子

消灭病毒(破解加密方式)

  1. 下载fiddler 设置代理抓取手机小程序数据包 抓包中可见有加密部分

  2. 使用root过得手机 获取到消灭病毒小程序的包

  3. 反编译小程序,找到里面的2个加密方法

  4. 修改游戏数据加签 发送即可

羊了个羊(绕开加密)

windows+mumu+fiddler

先上图

安卓逆向

安卓安装包 apk 结构

  1. assets目录:用于存放静态资源文件,如图片、JSON配置文件、二进制数据等。。

  2. lib目录:存放应用程序依赖的动态库文件(.so文件),这些文件通常是用C/C++编写的。

  3. res目录:存放资源文件,包括图片、布局文件、颜色定义等。

  4. META-INF目录:包含APK的签名文件。

  5. AndroidManifest.xml:应用程序的清单文件,包含应用程序的基本信息、权限声明、组件声明等。

  6. classes.dex:包含应用程序的字节码,是Android平台上的可执行文件。混淆代码解析

加壳与脱壳

加壳又称加固技术为了加强Android保护强度,防止被静态反编译工具破解而泄露源码。

加壳

动态加载

应用程序的核心逻辑延迟到运行时加载,通过动态加载DEX文件或SO库来执行一些敏感的代码。

Xposed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值