1
rocketman13 2019-03-13 10:17:45 +08:00
牛逼!
|
2
shyrock 2019-03-13 11:06:17 +08:00
话说这一通分析要多少时间?别人改一丢丢代码是不是之前的分析全废了要重来?
|
3
locoz OP @shyrock #2 正常弄的话就几分钟的事情,这个文章里写得细是因为要照顾新手 对方改代码的话要看改了什么,就以这个面试题的情况来说,因为操作复杂度很低+加密简单的关系,即使要改也改不了太多东西,所以不至于出现要重来一遍的情况,最多改一下解析的方式而已。
|
4
jzds001 2019-03-13 11:31:22 +08:00
666666
|
5
zyj321321321 2019-03-13 11:42:02 +08:00
以后搞爬虫基本上应该都会涉及到 js 逆向解析这方面了,就这最近半年,感觉这方面的资料也越来越多了起来,感谢楼主的分享。
|
6
hangs 2019-03-13 13:42:08 +08:00
:) 想知道你们都是怎么遇到这些面试题的,天天面试吗,还是我找不到组织 cry..
|
7
locoz OP @zyj321321321 #5 后面还有 APP 逆向相关的,可以关注一下专栏等更新
|
9
yzkcy 2019-03-13 14:48:02 +08:00
@locoz https://www.v2ex.com/t/528509 洋钱罐借款 这个 APP 求解怎么抓包?
|
10
yzkcy 2019-03-13 14:49:56 +08:00
以看雪上的方法"开个 VPN 然后转发到抓包工具",我试了下,这个 APP 还是抓不到,其他的可以。不知道是不是我配置有问题。
|
12
Johnson66 2019-03-13 15:07:55 +08:00
看了一下,js 就 400-500 百行~~ 难度不高
|
13
locoz OP @yzkcy #10 可能是开了双向证书认证( HPKP ),看看雪那个帖子里的截图可能还有他们自己弄的检测,有空帮你看看
|
15
leis1015 2019-03-13 15:46:23 +08:00 via iPhone
允许执行 js 就不难
最近碰到比较难的是改版后斗鱼的 web 的视频链接,有大佬能不执行 js 获取到最高画质视频链接吗? 有十几个加密算法,算法里的盐不一样,当主播开播时,随机挑一个算法和盐,用户访问时,下发该直播间的加密算法… |
18
zdnyp 2019-03-13 18:05:55 +08:00
插眼,学习之
|
19
zdnyp 2019-03-13 18:07:14 +08:00
里面用到的 aiohttp_requests 还没用过...相同的思路,requests 实现不了...
|
22
locoz OP @zdnyp #19 直接用 requests 实现不了我觉得挺正常。。因为感觉那个跳转页的图片并不是简单的随便加载一两个就行的,有并发要求(没测试
|
23
smyle 2019-03-14 10:51:56 +08:00 via Android
我就奇怪这些各种加密,在浏览器里就能顺利解析出来。做个爬虫为什么就那么费劲呢。。。
所以我能不能理解成: 由开发浏览器的人去写爬虫应该是信手拈来?当然,浏览器开发似乎并不简单。。。。 |
24
smyle 2019-03-14 10:53:56 +08:00 via Android
浏览器似乎“天然”就知道该怎么处理这些加密信息,而爬虫开发者还要一遍遍地抓包、逆向、测试
这是为什么呢? |
25
locoz OP @smyle #23 #24 因为浏览器的功能不仅仅是发个 HTTP 请求而已,还包含了执行 JS、渲染页面等各种操作,像这个面试题页面,你打开之后浏览器已经帮你执行好 JS、把 CSS 渲染到页面上展示了,所以在浏览器上打开的时候看起来就很简单,但实际上浏览器内部是做了很多操作的。
而如果做爬虫的话用浏览器去渲染就太“重”了,太多的资源被用在了没必要的解析、渲染和兼容上,这个面试题之所以要求不能使用 selenium 之类的自动化测试工具就是因为平时非必要的情况下没人会拿浏览器去做爬虫,成本高性能低。 再举个例子吧,和爬虫要的效果类似但和爬虫不一样的自动秒杀抢购,如果用浏览器去抢是永远不可能干得过那些破了加密直接调接口抢的人的,速度上不是一个级别(毫秒跟秒)。 |
26
Telegram 2019-03-14 16:50:02 +08:00
说白了还是需要用到安卓手机,而且需要 ROOT。
如果这个 APP 是 ios 独占呢? |
27
locoz OP @Telegram #26 蛤?你说啥?抓包那个吗?如果是 iOS 独占那就只能找越狱过的 iOS 机子了,并不是没有类似的工具,只是越狱过的 iOS 机子明显没有 ROOT 过的 Android 机子好找。( Android 机 ROOT 不是挺正常的事情吗?要搞这种东西不专门拿个开发机来搞?
|
28
smyle 2019-03-14 22:23:14 +08:00
@locoz 这个理解,尽可能轻量、只关注需要的数据。但还有个疑问是,比如说死磕 flash,浏览器开发者是如何做到事先能考虑到这种情况的呢?
我的意思是,有没有可能调试的时候,不用猜测、抓包、逆向等等(这波操作很牛,但确实繁琐),直接顺着浏览器逻辑来做?例如: 1、都是从获取一个 html 页面开始,OK,解析这个 html,找到关键部分; 2、需要下载 js,那就下载;需要执行 js,那就执行;这里需要渲染,那就渲染;需要调用视频播放器,那就调用…… 3、最后总能追根溯源抓到源头吧? 这种有没有可行性呢?大多数情况下,会不会比自己一遍遍测试、猜测来的快? |
29
locoz OP @smyle #28 “不用猜测、抓包、逆向等等”,你这个说法其实不就是自己弄一个类似 puppeteer 的东西吗?只不过不是用它来渲染页面,而是用它来找到请求和加密函数的位置。但是你想过没有,弄这个东西的时间成本会不会比直接逆向还要高?个人认为是不如直接逆向的
|
30
zhengjian 2019-03-15 11:54:46 +08:00
想起了大二的时候爬百度指数,分析加密的时候
|
31
stephenliubp 2019-04-25 18:13:06 +08:00
看看一个 iOS 工程师的 Web 端反爬虫技术方案 github.com/FantasticLBP/Anti-WebSpider
|
32
locoz OP @stephenliubp #31 看了一下,这个就是一般的字体反爬
|
33
stephenliubp 2019-04-28 11:31:27 +08:00
@locoz 你可以说说你的爬取思路吗?这个每次都会去更新字体规则,我比较想知道你的爬取思路以及可行性
|
34
citrix 2019-05-16 18:43:06 +08:00 via Android
@stephenliubp 去哪儿就用的这种反爬技术,google 下针对去哪儿网的爬虫怎么实现。
|