一开始以为爬虫很容易到天花板,干了几个月后,发现一入爬虫深似海。 要懂网络协议、懂 JS、懂 APP 反编译, 本来以为网站 Selenium 能对付了,但现在能识别的网站也渐渐增多, 反编译都衍生出另一个岗位了:逆向工程师。
由于是小公司,也没人讨论、请教,一切都得靠自己搜索、看书、买教程。 一年工作经验不到的人,爬的可能是三五年以上的网站、APP,有种一个人单挑一群人的感觉。
一个网站,能否爬下取决于网站难度, 不像自己从 0 写系统,一步步自己走上去 写完爬虫还担心网站会不会突然升级、爬虫会不会突然不走
现在对前路有点儿迷茫了,有没有人能指点迷津
1
nbboy 2018-10-17 17:31:55 +08:00
我目前也是做爬虫,之前是 web.可以交流下。
|
2
realkenshinji 2018-10-17 18:39:15 +08:00 via iPhone
一起一起,建个爬虫群吧?
|
3
Lwf1995 2018-10-18 07:32:40 +08:00 via Android
加我一个,虽然我业余玩
|
4
PulpFunction 2018-10-18 09:10:04 +08:00
你是从石器时代的工具上吗,现在很多前后分离,传输数据就是 json
找接口 requests 不就完事了,带上必要的参数 ‘必要’ 需要尝试 懂啥协议啊,get,post 网站用啥 咱们用啥 请求就完事了 还有巧技 |
5
kuroismith 2018-10-18 09:24:44 +08:00
|
6
PulpFunction 2018-10-18 09:38:54 +08:00
|
7
CharlieBrown OP 能看到明文和能批量获取明文是两码事啊,如何稳定批量爬取又是一回事,而且我觉得以后的产品也会慢慢往 APP 上转,现在有些网站都只是一个 APP 二维码了,不提供内容
@PulpFunction |
8
foxyier 2018-10-18 10:40:42 +08:00
最可怕的是, 一天需要写 4,5 个网站的爬虫,everyday
|
9
CharlieBrown OP @foxyier 那你们这业务量蛮大的啊,都爬的啥网站呀
|
10
foxyier 2018-10-18 10:53:49 +08:00
@CharlieBrown 视频。
|
11
yuanfnadi 2018-10-18 11:00:16 +08:00
@PulpFunction 还有接口返回 123.页面显示 132 的反爬。前端把字体改了 1 显示的字体是 2.
|
12
SpiderXiantang 2018-10-18 11:08:22 +08:00
我就挺害怕以后找到份每天写 xpath 正则的活的
|
13
tzhhahaha 2018-10-18 12:49:23 +08:00
有人知道爬虫实习要干些啥吗。。。我想找份 python 爬虫的实习过渡一下
|
14
Leigg 2018-10-18 13:11:39 +08:00 via iPhone
考虑往后端走。http,tcp 有空多补补基础,django 学学,时机成熟可转。
|
15
kidlfy 2018-10-18 13:58:17 +08:00
求带飞。。。总感觉前路渺茫。。。
|
16
kidlfy 2018-10-18 14:00:30 +08:00
@SpiderXiantang 感觉我现在就是天天写解析呢。。。偶尔才写写逻辑。。。不知道该学点啥了😭
|
17
Shyden2018 2018-10-18 14:25:02 +08:00
妹纸找工作中,爬虫好难找。。。楼主还缺人吗?
|
18
zidian9 2018-10-18 15:16:33 +08:00
爬虫入门简单,后面不容易。如果是科班出生的,编译原理,计算机网络,HTML,CSS,JS,汇编,JAVA,安卓开发都学过的话,TMD 很多时候还是不容易。
如果网站有反爬虫,做爬虫是个玄学,类似于“网络攻防”之类的玄学。 现在我在阿里做后端,防止人家爬虫加 滑动验证(利用机器学习做鼠标轨迹的人机验证),加规则:A 秒内单 IP 访问 B 次弹人机验证等等,现成的方案随手就加了。搞爬虫的就辛苦了。 本科学的信息安全,所以那个时候研究了很多爬虫的技术,现在工作中有时候也需要做爬虫,不过一般都是找一些歪门邪道(如目标分享出去的 H5 页面,APP 端页面)的接口去抓数据。直接正面抓数据只要人家网站不想让你抓的都挺困难的。 欢迎交流~ |
19
Loooom 2018-10-18 15:41:18 +08:00
APP 逆向反编译书或视频教程求推荐
|
20
CharlieBrown OP @zidian9 是的,有时候正面获取数据太难利用一些网站逻辑上的漏洞也能获取数据,但这并不是一劳永逸的办法。
一旦网站发现修复了,就束手无策了。根本的解决方法还是扎实的 js 基础从头到尾过一遍操作或分析出参数进而获得数据。 APP 也是一个道理,不反编译,不看到底层代码,能抓的也就只有那种不加密的 APP。 光是这两个方面,就得 js 扎实、会反编译、java 扎实,而且现在安卓有的好像开始用 kotlin 开发了吧。 再加上点你们这种机器学习的, 吾生有涯而知无涯呀! 所以我才觉得爬虫对新手不友好 |
21
JCZ2MkKb5S8ZX9pq 2018-10-18 16:54:48 +08:00
爬了也有一阵子了,感觉最有用的的,是找到好用的接口,有些没有签名验证的,或者历史遗留的,就好很多。现在的确越来越难爬了。碰到云防火墙基本没办法,ip 池不够用。
|
22
CharlieBrown OP |
23
yzkcy 2018-10-18 17:21:26 +08:00
#20 讲的会不会有法律风险?
|
24
pricelessLucky 2018-10-19 00:47:23 +08:00
@kuroismith 可以给个示例网站看一下吗?有点好奇。
|
25
kuroismith 2018-10-19 09:05:13 +08:00
@pricelessLucky 印象里百度指数就是这样做的
|
26
bk201 2018-10-19 09:18:15 +08:00
爬虫有点 hacker 的赶脚
|
27
wc110302 2018-10-19 11:14:37 +08:00
现在爬虫真的是好难搞啊,我最近在公司里面也是很苦难,面对对方频繁更换反爬策略无从下手,一会儿更换验证码,一会儿更换封 ip 频率,从 PC 端搞到 APP 端,不过说实话现在 APP 的反爬还没 PC 那么严重,得会一些反编译手段,脱壳,逆向,有 JAVA 功底应该不难。现在我也是很苦恼,到底是在 PC 端一路走到底,把 JS 给弄透吃透,还是去好好搞 APP 端,把反编译,逆向这些给弄明白,又或者是在验证码机器学习识别上下功夫
|
28
zidian9 2018-10-19 13:17:30 +08:00
@CharlieBrown 并不是,精通 JS 不是万能的。
1. 如果网站的 JS 有(黑盒) uglify,读懂他的 JS 非常困难,成本非常高 2. 存在解不了的 JS,比如 cloudflare 动态下发的 JS (动态下发一个 JS,每次都不一样),无法破解 3. 就算把 JS 取出来,用 V8,node,之类的引擎去运行,也只能解决构造请求的问题。 各种验证码,人机验证。IP 限制,请求频率限制的防爬手段依然难以解决。 |
29
zidian9 2018-10-19 13:20:41 +08:00
@wc110302 最简单通用的方式是用 headless 的浏览器,完全模拟人工操作,增大 IP 池,降低访问评率。缺点是效率低,资源成本高
|
30
wc110302 2018-10-19 13:38:31 +08:00
@zidian9 --! 先不说目前一部分网站的反爬已经能识别 headless,光是资源耗占以及抓取效率大部分公司都是不会采用的,一部分网站的思路倒是可以通过浏览器拿到 cookie,然后再抓包进行操作
|
31
CharlieBrown OP @zidian9 你说的关于 js 的第一点应该是类似于混淆吧,
第二点动态下发 js 这个我还真没听说过, 至于 headless 浏览器就如 30 楼所说的,占服务器资源、运行慢且如今已能被识别,而且我记得我当初做天眼查爬虫的时候用浏览器所得到的时间是未经过处理的,也就是显示 2018-10-19,但浏览器返回的是 4122-58-98 这样的, 见过一种思路是直接截图然后 OCR。 最后问一下,怎么输出换行\n 吗 |
32
zidian9 2018-10-19 14:40:44 +08:00
@wc110302
@CharlieBrown headless 理论上不被发现。被发现只是市面上 headless 浏览器有一些特征。理论上自己开发的 headless 浏览器可不被发现。占用资源,跟运行慢在大规模部署下不是太大问题。 OCR 只能解决很少一部分验证码问题。滑动验证,变形字符验证码都不好解决。 简单讲,防爬有很多手段。然而作为一个公司要爬数据,去应对每种防爬手段,给出应对方案,都需要巨大的成本。在我看来是典型的性价比很低的工作。 容易爬的网站,三两下就能爬取到数据。有防爬的网站,要付出很大的努力,也不一定能成功。这个“不一定”,导致我不会去破解复杂的网站。 爬虫这个工作,我认为是不适合职业道路发展的。至少在我们这里,不会有人专门搞爬虫。当然,设计和实现通用的爬虫系统除外。在我看来,爬虫就是针对于不同的网站,写脚本。难以复用。并且网站一旦发版更新,就要修改脚本。是一个十足的体力活。 |
33
zidian9 2018-10-19 15:37:25 +08:00
@CharlieBrown 输出换行\n 不太理解是啥意思
|
34
locoz 2018-10-19 17:53:37 +08:00
@zidian9 #28
1. 如果网站的 JS 有(黑盒) uglify,读懂他的 JS 非常困难,成本非常高 你说的应该是混淆 /加密后的代码吧,如果只是简单混淆的话,有很多方式能快速找到需要的东西;如果是加密的话,不管怎么加密最终还是会需要还原出原来的代码来执行的,只需要处理一下就可以把原始代码弄出来。弄得多了之后并不需要花费多少时间就能找到需要的部分 2. 存在解不了的 JS,比如 cloudflare 动态下发的 JS (动态下发一个 JS,每次都不一样),无法破解 动态下发的 JS 都会是按一定规律生成的,毕竟最终是为了执行后生成一个加密字符串放到 cookie 或请求里,只要找到规律就破掉了 3. 就算把 JS 取出来,用 V8,node,之类的引擎去运行,也只能解决构造请求的问题。各种验证码,人机验证。IP 限制,请求频率限制的防爬手段依然难以解决。 图片验证码要么机器学习要么接打码平台靠“人工智能”的力量打码 IP 限制、请求频率限制这种无非就是堆 IP、堆账号就能解决的问题 而人机验证就是多来一步 1、2 的步骤之后加上各种拟人轨迹 /设备指纹 /浏览器指纹的生成罢了,实在不行不还有搞灰产的那种打码接口卖么 其实主要看的还是值不值得砸钱堆 IP (高质量 IP 贵)、堆账号(需要手机号接验证码 /需要实名认证 /很容易封号 的贵)、打码(大量打码的情况下贵、人机验证搞不定的情况下用别人的打码接口贵) |
35
locoz 2018-10-19 18:09:15 +08:00
爬虫工程师已经是一个对新手很友好的职业了,大部分公司的需求其实都不难,需求难搞的都是那种做的事情偏灰 /黑产的
研究方向的话可以往逆向和机器学习方面发展,毕竟难搞的东西都需要这两个。尽量减少使用 headless、appium 之类的东西,毕竟很浪费资源且爬的速度慢,对技术水平也不会有太大的提升。 |
36
nkydxsjy 2018-10-19 18:57:46 +08:00
关键看自己喜欢与否了~
|
37
zidian9 2018-10-19 20:39:44 +08:00
@locoz
1. 无法破解的 js uglify https://jscrambler.com/ 2. 解不了的 js,了解下 cloudflare 的防爬策略,就是下发一个动态的 JS,目的是反爬虫,你需要上一个 node 去运行这个 js 3. 成本高,规则不透明 比如我这里有滑块验证,拖动验证,点击图块等 N 种人机验证,在某些情况下出现 A 验证某些情况下出现 B 验证,你现在做逆向,开发,可能你刚开发完,去大规模部署完之后,运行一段时间,发现新的 C 验证,那么你要重新继续开发。 开发成本高。 |
38
locoz 2018-10-20 13:27:08 +08:00 via Android
@zidian9 #37
1.这家的东西我还从来没见过有哪个网站用了的,然后官网注册接口也挂掉了,没法测试。根据网上搜到的结果来看只是做了混淆,强度还没有阿里的那么大,并不是无法破解的 2.cloudflare 的那个防 DDoS 的 js 属于最简单级别,从看操作过程到写出破解 demo 连 5 分钟都不用,提出生成参数的那部分执行一下就没别的了,里面也没塞一些会大量占用 CPU 的代码,对成本几乎无影响。你可以了解一下知道创宇和阿里的同类型产品,其实也就只是多了一些混淆、加密、document 操作、浏览器指纹、鼠标轨迹之类的东西而已,把核心部分提出来并把需要拟人的部分生成好执行一遍就完事了 3.成本问题(时间成本和金钱成本)在很多时候其实并不是什么很大的问题,需要用到大量复杂人机验证的数据,数据本身的价值也会很高。但是在使用了那么多人机验证之后服务方还要考虑如何才能不影响普通用户的使用体验,所以国内的像百度、阿里、腾讯、网易等大企业对需要进行保护的部分通常都不会设置太复杂的人机验证,而是依靠各种方式收集证据并使用法律手段来解决掉通过那些部分赚钱的灰黑产 |
39
frostming 2018-10-22 10:58:35 +08:00
|
40
CharlieBrown OP @frostming 反过来想,一旦图像识别的速度上来,就可以使用图像识别搞定 js 加载的数据
|
41
muzico425 2018-10-23 09:38:32 +08:00 1
我有个 python 微信群,爬虫居多不过 100 人了,所以有想加的加我微信:italocxa,备注 v2ex
|
42
Cprocc 2018-10-31 18:58:39 +08:00
萌新学习中,每天看着爬虫和 django 发呆,不知怎么深入。基础知识都学过,但不知道怎么用,还有一年毕业,焦虑
|
43
Harlaus 2018-11-14 16:12:46 +08:00
@Shyden2018 别做,如果你有兴趣,可以做 django/flask web+有爬虫需求的岗位,但是爬虫不要职业做,因为这个需求太窄了,很多时候还爬不了
|
44
roberts 2019-03-14 13:58:25 +08:00
@PulpFunction app 大多不走 http https 自己封装协议
|