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
aragakiiyui
V2EX  ›  Python

对于需要验证的爬虫问题

  •  
  •   aragakiiyui · 2015-07-14 10:57:20 +08:00 · 5358 次点击
    这是一个创建于 3445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近写一个爬虫,根据输入的关键字抓取某电商网站的搜索结果。实际应用时估摸着请求了5、6次,然后便直接跳转到登录页面,需要登录才能进行抓取,所以就只能登录再抓了。
    可是我很好奇,这种验证机制背后的原理是什么?!有大神能够解答一番嘛,不甚感激!

    31 条回复    2015-07-15 10:05:32 +08:00
    latyas
        1
    latyas  
       2015-07-14 11:07:51 +08:00
    233 难道是淘宝
    crayygy
        2
    crayygy  
       2015-07-14 11:11:30 +08:00
    233不要测试淘宝
    注意友好
    wind4
        3
    wind4  
       2015-07-14 11:24:14 +08:00
    referer、cookie、csrf、请求间隔……只想到这么多
    socrates
        4
    socrates  
       2015-07-14 11:28:09 +08:00
    @wind4 再加上user-agent,有些网站会检查一些http的header特征,看看是否是爬虫
    est
        5
    est  
       2015-07-14 11:34:03 +08:00
    2333 最弱的反爬虫手段。
    frankzeng
        6
    frankzeng  
       2015-07-14 12:06:41 +08:00
    加上user-agent,然后随机暂停一下
    akira
        7
    akira  
       2015-07-14 12:10:20 +08:00
    同一IP短时间内访问次数,这个限制也蛮常见的
    ZzFoo
        8
    ZzFoo  
       2015-07-14 12:35:19 +08:00
    @latyas
    @crayygy
    @est
    有什么梗嘛?
    ljcarsenal
        9
    ljcarsenal  
       2015-07-14 12:36:57 +08:00
    据说taobao有复杂的检测模型。。。不光是上面提到的那些
    aragakiiyui
        10
    aragakiiyui  
    OP
       2015-07-14 14:24:23 +08:00
    @latyas @crayygy 其实是一淘
    aragakiiyui
        11
    aragakiiyui  
    OP
       2015-07-14 14:28:43 +08:00
    @frankzeng 就是会有大量的请求啊。。不然我也乐意停一停,不过也太吊了,请求几次就要登录了。。
    aragakiiyui
        12
    aragakiiyui  
    OP
       2015-07-14 14:33:11 +08:00
    @est 该如何是好。。。
    aragakiiyui
        13
    aragakiiyui  
    OP
       2015-07-14 14:35:51 +08:00
    现在是14:35分,我又能搜了。。我直接F5手动刷新。。若干次后,又直接跳转登录页面了。。
    nullcc
        14
    nullcc  
       2015-07-14 14:40:24 +08:00
    这种类似CC攻击的请求是有可能被拦截的,内部验证机制可能会相当复杂,user-agent,referer这些的有可能会去验证,还有就是CC攻击几乎是一些纯粹的页面攻击,大多并不会去请求这个页面所加载的一些其他文件,有一种做法是去查看某个IP在加载某页面时是否还加载了相关文件,但从防护角度来说这个方法是相当复杂的。
    nullcc
        15
    nullcc  
       2015-07-14 14:47:40 +08:00
    尽管有各种验证机制,就算能绕过,但同个IP过于频繁的请求还是有可能被加入黑名单
    aragakiiyui
        16
    aragakiiyui  
    OP
       2015-07-14 14:52:37 +08:00
    @nullcc 那估计只能不停换ip去访问了。但是有什么简单的办法确定何时换ip?
    paw
        17
    paw  
       2015-07-14 15:00:16 +08:00
    打开chrome ,右键 审查元素, 打开淘宝 搜索
    然后把chrome发出请求的全部头和cookies都添加到爬虫去。。
    nullcc
        18
    nullcc  
       2015-07-14 15:04:05 +08:00
    @aragakiiyui 除非能知道对方的计算方式,如果不怕累的话,不断累加请求去发。。
    imn1
        19
    imn1  
       2015-07-14 15:11:32 +08:00
    很明显大数据检测出不是“常用设备”
    latyas
        20
    latyas  
       2015-07-14 15:48:59 +08:00
    淘宝估计是各URL有相应的单位时间访问次数限制,这个单位时间不是1s,可能是一段时间,并且全天各时间段都不一样,然后按照行为给予客户端惩罚值,超过了就要输验证码,然后这个阈值会提高,再次达到时又要输验证码,再次提高,有点像E绅士,233
    est
        21
    est  
       2015-07-14 16:45:17 +08:00
    @paw 没用。比如用js插入一段css加载了一个background的图片,爬虫没加载,直接封ip。

    @aragakiiyui 其实对付这种只有一个办法:买ip。淘宝批发代理ip很便宜,1元钱1w个的样子。
    imn1
        22
    imn1  
       2015-07-14 17:18:57 +08:00
    @est
    封 ip 这个有点太狠了,估计不会,因为图片、css、js没加载是常有的,估计最多会302到一个错误页面
    frankzeng
        23
    frankzeng  
       2015-07-14 18:17:28 +08:00
    @aragakiiyui 这种事急不来的,延长时间,慢慢爬。
    t2xingzhe
        24
    t2xingzhe  
       2015-07-14 18:17:47 +08:00
    记得爬豆瓣的时候也会出现验证你是否是机器人,大概有每分钟访问次数判断
    realpg
        25
    realpg  
       2015-07-14 20:00:59 +08:00
    我业余就是搞各种黑科技的。

    反自动化、自动化识别是其中最好玩的,你在跟一大帮其他顶尖程序员战斗。

    不用淘宝,就我自己都有一大把模型去判断你到底是什么东西,淘宝受限于规模过大,还不好部署一些奇葩的黑科技东西,自己弄就好多了。

    识别非人类用户,半非人类用户的方法太多了,随便组合组合,随机的,再结合访问次数,就够杀掉你了。

    最基础的,你用一个固定IP的服务器去抓东西,这都不用专业的反自动化引擎,基本的IP判断结合特征就把你识别透了。
    paw
        26
    paw  
       2015-07-15 09:31:39 +08:00
    @est 验证元素加载也简单,win下就webbrowser,用python就 PhantomJS
    当然这样会很慢。。。
    aragakiiyui
        27
    aragakiiyui  
    OP
       2015-07-15 09:44:24 +08:00
    @paw 这个都知道啊,问题是,你用chrom手动F5刷新都能被跳转。。。不信你试试,一淘网。。
    aragakiiyui
        28
    aragakiiyui  
    OP
       2015-07-15 09:48:12 +08:00
    @realpg 那除了换ip没有别的方式了?!
    aragakiiyui
        29
    aragakiiyui  
    OP
       2015-07-15 09:49:36 +08:00
    @t2xingzhe 豆瓣有次数限制的,而且也提供了API。
    realpg
        30
    realpg  
       2015-07-15 09:54:01 +08:00
    @aragakiiyui 怎能换IP这么简单?
    你试图去爬淘宝,你的技术储备够么?淘宝是明确的禁止其他搜索引擎抓取的大网站,有专门的反抓取技术部门
    上一份要爬淘宝的业务,技术顾问职位给我开的价是在职干三个月给120K,我都没干
    既然去抓淘宝,那都是巨挣钱的项目,不是撸cb就是撸iic,哪个缺钱……找专家吧
    est
        31
    est  
       2015-07-15 10:05:32 +08:00
    @paw phantomjs 被研究得不要太透彻。。现在反爬虫思路是机器的墒比人类活动低的多。。。铁了心要反爬虫是无解的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 14:12 · PVG 22:12 · LAX 06:12 · JFK 09:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.