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 · 8608 次点击
    这是一个创建于 2039 天前的主题,其中的信息可能已经有所发展或是发生改变。

      某众点评网的反爬措施是真的🐮,但误伤率也比较高。如果没有加农炮(加强型爬虫代理 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   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 21:13 · PVG 05:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.