花式反爬之某众点评网 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Northxw
V2EX    Python

花式反爬之某众点评网

  •  
  •   Northxw 2019-04-25 11:50:00 +08:00 9116 次点击
    这是一个创建于 2364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    某众点评网的反爬措施是真的,但误伤率也比较高。如果没有加农炮(加强型爬虫代理 IP ),获取到的数据量会少之又少。

    除此之外,该网站设置了多种反爬措施,多种数据逻辑障碍等来 ban 爬虫,是我目前为止碰到的最难缠的网站。

    但是如果你真的造完该站点的爬虫程序,你会发现维护很累,基本上一天一个样(可能有点夸张)。但是作为训练目标,真的很有收获。

    https://github.com/Northxw/Dianping 项目已提交 github,欢迎提交 issue。

    54 条回复    2019-05-01 22:16:45 +08:00
    PP
        1
    PP  
       2019-04-25 12:01:55 +08:00 via iPad   1
    我记得在一篇文章里面读到过一个说法,反爬不是为了阻止爬虫,而是为了增加爬虫难度,所以要一天一个样,比的就是勤勉。

    有谁能够讲一讲爬虫和反爬的道理?论理不论事。请不吝赐教!
    Klingon
        2
    Klingon  
       2019-04-25 12:09:13 +08:00
    #1 "比的就是勤勉"
    lhx2008
        3
    lhx2008  
       2019-04-25 12:13:36 +08:00 via Android   1
    只要能被用户看到,理论上就可以被爬,但是大规模的爬已经有很多方法控制,现在就是小规模爬取上面打游击战
    @PP
    dcalsky
        4
    dcalsky  
       2019-04-25 12:22:02 +08:00 via Android
    楼主有研究过登录吗?登录接口需要带 cookie 才能成功的那种,而 cookie 的获取方式需要在页面上触发 click 事件从而发 http request。
    ml1344677
        5
    ml1344677  
       2019-04-25 12:25:21 +08:00
    @dcalsky 所以 cookie 池出现了
    dot2017
        6
    dot2017  
       2019-04-25 12:25:57 +08:00
    点评是真的变态,我现在网页版基本就处于没法用的状态,打开一家餐厅就验证,验证以后还不会自动跳转
    lithiumii
        7
    lithiumii  
       2019-04-25 12:31:54 +08:00
    点评我网页版也经常用不了,后来才知道是反爬……
    n329291362
        8
    n329291362  
       2019-04-25 12:32:49 +08:00 via Android
    爬客户端协议
    Northxw
        9
    Northxw  
    OP
       2019-04-25 12:47:51 +08:00   1
    @n329291362

    @lithiumii 哈哈,被坑了吧

    @dot2017 公认的反爬比较变态的一家站点。

    @dcalsky 登录如果只要 cokkies 而没有加密参数,应该很 easy 的,但是不清楚你说的具体情况是什么

    @lhx2008 确实,但是当反爬成本比较高的时候,比如大众点评,维护费用真的很高的。

    @PP 没有真正的反爬,只有难度的加深,最终....
    ml1344677
        10
    ml1344677  
       2019-04-25 12:53:07 +08:00   2
    @PP 高德的反爬从来不会限制你 IP 对服务器的访问,我需要抓取的数据里面有一个 list,顺序很重要。高德的反爬是将这个 list 的排序打乱,而你又要花计算成本去计算这个 list 是否正确。所以根本不是反爬虫,而增加了爬虫成本。
    PP
        11
    PP  
       2019-04-25 12:59:47 +08:00 via iPad   1
    @lhx2008 谢谢指点!祝好!

    @Northxw 您和那篇文章作者有同样的看法,看来高手在一些问题是是有很强的共识的。

    @vcinex 借地回复。您两天前 @ 我的信息今天才到,而且那篇文章我没有权限看到。根据文章的标题和您提出的问题,我大致猜测了一下事由,尝试回复和探讨一下。对于二次 clone 后再分享,要拆开,二次 clone 没问题,再分享会因为缺少授权而受到法律限制。在理论法律环境下,可能会因为不满足立案条件或难以评估损失而无法追责。现实中,口袋罪。我不是律师,信口开河,当不得真。
    PP
        12
    PP  
       2019-04-25 13:01:50 +08:00 via iPad
    @ml1344677 似乎可以理解为增加重复性成本?受教!感谢!祝好!
    Ultraman
        13
    Ultraman  
       2019-04-25 13:07:12 +08:00 via Android
    @PP 感谢大佬指点。
    另,长见识了才知道还有口袋罪这么个说法…
    l0wkey
        14
    l0wkey  
       2019-04-25 13:14:19 +08:00
    17 年时候学习 pyspider 框架时候练手爬过, 爬了 1200w+的页面,基本没感受到反爬...
    TheBestSivir
        15
    TheBestSivir  
       2019-04-25 14:01:35 +08:00
    别光爬啊,多用用我司产品啊。再爬就给你们爬倒闭了呀
    stephenliubp
        16
    stephenliubp  
       2019-04-25 14:18:32 +08:00
    看看我的这个 Web 端反爬虫方案 : https://github.com/FantasticLBP/Anti-WebSpider
    Northxw
        17
    Northxw  
    OP
       2019-04-25 14:22:26 +08:00
    @stephenliubp 可以的

    @l0wkey 哈哈 都过时了

    @TheBestSivir 哎吆。。
    dcalsky
        18
    dcalsky  
       2019-04-25 14:38:37 +08:00 via Android
    @Northxw 获取 cookie 很麻烦,需要真实的浏览器环境才行。
    Aliennnnnn
        19
    Aliennnnnn  
       2019-04-25 14:55:21 +08:00
    @dcalsky 用 puppeteer 呀
    JCZ2MkKb5S8ZX9pq
        20
    JCZ2MkKb5S8ZX9pq  
       2019-04-25 15:09:21 +08:00   1
    说到某团我就来气。
    去年我们好好地爬着 x 红书,给客户做媒体方案,顶多限制 ip 频次,但也能用。

    然后大众 X 评 tm 就整个爬了 x 红书,把一堆现成的帖子评论放自己产品里,结果 x 红书立刻升级了反爬……
    大众 X 评自己嘛坑得一逼,贼当久了看谁都像贼。网页版正常访问,开一个页面都要验证至少两次。
    已经删了,偶尔用下小程序。
    n329291362
        21
    n329291362  
       2019-04-25 16:06:14 +08:00
    @Northxw 他们客户端类似于 https 加密 好像没做反爬
    Northxw
        22
    Northxw  
    OP
       2019-04-25 16:21:03 +08:00
    @dcalsky 你说的还是大众点评吗?

    @JCZ2MkKb5S8ZX9pq 哈哈哈,现在互联网数据不都是这样搞嘛 大家都心知肚明

    @n329291362 哦豁,还有这种操作,可以尝试一下啊
    aver4vex
        23
    aver4vex  
       2019-04-25 16:24:01 +08:00
    我碰到过必须开启 Javascript 的网站,只能用 selinum 搞。
    Northxw
        24
    Northxw  
    OP
       2019-04-25 16:27:06 +08:00
    @aver4vex 试试 pyppeteer 吧,要慢慢了解。不过 selenium 更大众化啦
    dcalsky
        25
    dcalsky  
       2019-04-25 16:52:26 +08:00 via Android
    @Aliennnnnn puppeteer 慢呀 高并发需求
    tikazyq
        26
    tikazyq  
       2019-04-25 16:55:53 +08:00
    已 star,考虑用 crawlab 来运行一下,https://github.com/tikazyq/crawlab
    dcalsky
        27
    dcalsky  
       2019-04-25 16:56:37 +08:00 via Android
    @Northxw 不是,一个需要登录的购物网站,我需要做下单
    Northxw
        28
    Northxw  
    OP
       2019-04-25 17:47:36 +08:00
    @tikazyq 类似 Gerapy 的可视化工具嘛?看起来不错,已 star。

    @dcalsky 可以告诉下地址嘛,我也试试啦。
    crab
        29
    crab  
       2019-04-25 17:58:21 +08:00
    @aver4vex js 这种扣出相关函数算出符合数据就行了。无规律给脏数据就很麻烦了。
    jccg90
        30
    jccg90  
       2019-04-25 18:10:11 +08:00
    这垃圾网站,别说爬虫了。。。人去看都费劲。。。
    用 app 的接口爬还行
    akira
        31
    akira  
       2019-04-25 18:16:04 +08:00
    反爬只能增加爬虫成本 并不能杜绝
    Northxw
        32
    Northxw  
    OP
       2019-04-25 18:28:27 +08:00
    @crab 对的,大部分靠这种办法都能解决。

    @jccg90 哈哈,有点画面感哦

    @akira 对的
    akira
        33
    akira  
       2019-04-25 18:50:49 +08:00
    @tikazyq crawlab 不错的样子,要是爬虫脚本能分享就好了
    luanguang
        34
    luanguang  
       2019-04-25 18:54:18 +08:00 via Android
    大佬歪个楼……我想请问一下你是怎么提升爬虫技术水平的

    我是一开始是使用 pyspider 爬取一些网站,然后对爬虫开始感兴趣,然后看书敲代码,学 scrapy 框架。不过遇到反爬厉害一点的网站就只会用 selenium+代理池强行怼……所以想问问有什么继续进阶的方向。
    tikazyq
        35
    tikazyq  
       2019-04-25 19:14:59 +08:00
    @akira 正在考虑这个功能,不过是个大功能,可以关注一下,近期会考虑开发
    akira
        36
    akira  
       2019-04-25 19:20:56 +08:00
    @tikazyq 参考下神箭手 他们家做的挺不错的了
    fenghuang
        37
    fenghuang  
       2019-04-25 19:44:32 +08:00
    是不是必须有代理池才能玩
    Northxw
        38
    Northxw  
    OP
       2019-04-25 19:55:46 +08:00
    @luanguang 平心而论,感觉自己还比较菜。
    简单说:实践,实践,多实践。刷书后,多敲代码巩固,不管书上内容对个人来说多么通俗易懂,你不上手永元不知 Bug 所在。该过程可以完善你的知识框架。进阶的方向有很多:App,增量式,分布式( rabbit,celery 等),集群,大数据等,到时候自己决定。

    @fenghuang 小爬虫,便宜的付费代理可以搞一下
    miaomiao0323
        39
    miaomiao0323  
       2019-04-25 20:38:17 +08:00
    @stephenliubp #16 我的理解是对数字做了一次自定义的加密,但是前端解密肯定是在 js 的啊,爬虫可以找到这段 js,把你的算法解出来
    PP
        40
    PP  
       2019-04-25 20:44:03 +08:00 via iPad
    @JCZ2MkKb5S8ZX9pq 哈哈哈哈,笑死我了。
    aver4vex
        41
    aver4vex  
       2019-04-25 20:48:46 +08:00
    @crab 我爬的那个网站是先检测浏览器是否启用 js,然后服务端负责跳转到不同页面。要是用的是 react,node,vue 之类的还倒好搞。
    aver4vex
        42
    aver4vex  
       2019-04-25 20:49:26 +08:00
    @Northxw 试一下,看看性能跟 selinum 比咋样。
    matsuz
        43
    matsuz  
       2019-04-25 21:39:49 +08:00
    大众点评虽然爬起来比较麻烦,不过还好吧

    最麻烦的我感觉是天猫淘宝的搜索页
    redsonic
        44
    redsonic  
       2019-04-25 21:43:33 +08:00
    说实在的,啥时候有基于人工智能的爬虫.
    Northxw
        45
    Northxw  
    OP
       2019-04-25 22:04:53 +08:00
    @matsuz 你说的是基于登录界面的抓取吗?

    @redsonic 爬虫的趋势在向智能化系统方面发展,不过最终留下来的肯定是大虫啦
    yanzixuan
        46
    yanzixuan  
       2019-04-26 10:16:47 +08:00
    @matsuz 淘宝?我正常使用都显示不了。
    rocketman13
        47
    rocketman13  
       2019-04-29 14:06:52 +08:00
    问一下计算偏移量的公式在那个文件可以找到呢
    Northxw
        48
    Northxw  
    OP
       2019-04-29 16:39:43 +08:00
    @rocketman13 可以的,数字的偏移量计算比较固定,文字的偏移量计算比较多变,我在 md 文档里面有说明,你可以看下
    bituplink
        49
    bituplink  
       2019-04-30 08:15:09 +08:00   1
    @PP 可以看下这个图,我也刚尝试爬虫,但是觉得这个图让我更好的理解了爬虫与反爬虫的思路
    http://www.bituplink.com/python-crawler-study-six-level-graph.html
    PP
        50
    PP  
       2019-04-30 23:25:36 +08:00 via iPad
    @bituplink 谢谢您的推荐和分享!祝好!
    Don9
        51
    Don9  
       2019-05-01 10:02:08 +08:00
    @Northxw 楼主你好,我是一个学生,最近在做一个社会调查,需要一个市级城市的餐饮数据,自己不是学编程专业的,对于大众点评这种有反爬虫网站实在是力不从心,您能帮我爬取一份数据么,如果可以,可以联系我 QQ:NjIwMDAwMjY1,万分感谢.
    Northxw
        52
    Northxw  
    OP
       2019-05-01 18:24:49 +08:00
    @Don9 第一次见全英文扣扣号
    Don9
        53
    Don9  
       2019-05-01 20:59:22 +08:00
    @Northxw BASE64 编码
    Northxw
        54
    Northxw  
    OP
       2019-05-01 22:16:45 +08:00
    @Don9 这个就有点骚了,也不给点提示
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5444 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:08 PVG 17:08 LAX 02:08 JFK 05:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86