这种 512 状态反爬虫怎么绕过? - 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
ricemo
V2EX    Python

这种 512 状态反爬虫怎么绕过?

  •  
  •   ricemo 2017-10-30 13:28:58 +08:00 10587 次点击
    这是一个创建于 2970 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图因为一些原因需要爬取 http://www.cnvd.org.cn/漏洞信息 然而请求返回状态为 521,并返回一串代码

     <script>var x="return@Oct@window@for@https@false@reverse@setTimeout@while@f@firstChild@h@_phantom@addEventListener@17@substr@if@DOMContentLoaded@innerHTML@e@length@a@i@1509340839@4@catch@995@challenge@__phantomas@cookie@Path@Expires@var@Mon@replace@r@toLowerCase@div@0@cd@2@String@l@eval@document@20@join@30@fromCharCode@createElement@__jsl_clearance@try@location@function@charAt@39@href@match@06@GMT@captcha@1500@x@dc@else@attachEvent@onreadystatechange".replace(/@*$/,"").split("@"),y="11 1b=1m(){9(3.d||3.t){};11 18,20='1j=o.r|17|';11 a=[1m(1v){1 1c('1a.1h('+1v+')')},(1m(){11 c=1d.1i('16');c.j='<m 1p="\\'/\\'">1v</m>';c=c.b.1p;11 14=c.1q(/5?:\\/\\//)[17];c=c.g(14.l).15();1 1m(1v){4(11 n=17;n<1v.l;n++){1v[n]=c.1n(1v[n])};1 1v.1f('')}})()];18=[[(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[]),[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[]),(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+((-~[]|19)+[]+[]),[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+[~~{}],([19]*((19^-~[]))+[])+(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[]),[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+[~~{}],[-~[]]+[~~{}]+([19]*((19^-~[]))+[])],[([(-~[]|-~(+!+{}))]*((-~[]|-~(+!+{})))+[]+[]),([(-~[]|-~(+!+{}))]*((-~[]|-~(+!+{})))+[]+[])],[[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+([(-~[]|-~(+!+{}))]*((-~[]|-~(+!+{})))+[]+[]),(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+([19]*((19^-~[]))+[]),[-~[]]+[-~[]]+((-~{}<<-~{})+[]+[[]][~~[]]),(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[])+[-~[]]],[[-~[]]+[~~{}]],[[-~[]]+[-~[]]+((-~{}<<-~{})+[]+[[]][~~[]]),(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[])+[p],(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+((-~{}<<-~{})+[]+[[]][~~[]]),([(-~[]|-~(+!+{}))]*((-~[]|-~(+!+{})))+[]+[])+[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))],[-~[]]+((-~{}<<-~{})+[]+[[]][~~[]])+[~~{}],[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))],[-~[]]+((-~{}<<-~{})+[]+[[]][~~[]])+[~~{}],(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[]),[-~[]]+[~~{}]+([19]*((19^-~[]))+[])],[[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]],[[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[]),[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))]+(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[]),(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])+(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[]),((-~[]|19)+[]+[])+[(+!+{})-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))],(([(-~{}<<-~{})]+~~[]>>(-~{}<<-~{}))+[]+[])+[-~[]],([19]*((19^-~[]))+[])+(-~[]-~[]-~![]+(-~{}<<-~{})+(-~[]|(-~{}<<-~{}))+[]+[])]];4(11 n=17;n<18.l;n++){18[n]=a.7()[[-~[]]](18[n])};18=18.1f('');20+=18;8('1l.1p=1l.1p.13(/[\\?|&]1t-s/,\\'\\')',1u);1d.u=(20+';10=12, 1g-2-f 1r:1e:1o 1s;v=/;');};h((1m(){1k{1 !!3.e;}q(k){1 6;}})()){1d.e('i',1b,6);}21{1d.22('23',1b);}",z=0,f=function(x,y){var a=0,b=0,c=0;x=x.split("");y=y||99;while((a=x.shift())&&(b=a.charCodeAt(0)-77.5))c=(Math.abs(b)<13?(b+48.5):parseInt(a,36))+y*c;return c},g=y.match(/\b\w+\b/g).sort(function(x,y){return f(x)-f(y)}).pop();while(f(g,++z)-x.length){};eval(y.replace(/\b\w+\b/g, function(y){return x[f(y,z)-1]}));</script> 

    正常访问没问题,curl,requests 请求就返回 521
    考虑到效率问题和环境问题,暂时没打算用 phtomjs 等
    请问这种反爬虫是根据什么判断的,或者说该怎么绕过呢?

    23 条回复    2020-07-11 18:04:29 +08:00
    jlsk
        1
    jlsk  
       2017-10-30 13:33:05 +08:00
    你连***ra***t 都不知道还做什么爬虫啊?
    pynix
        2
    pynix  
       2017-10-30 13:44:12 +08:00 via iPhone
    这代码有点像 brainfuck
    Event
        3
    Event  
       2017-10-30 13:55:58 +08:00
    直接模拟运行这段取 cookies 试试看
    402124773
        4
    402124773  
       2017-10-30 14:00:51 +08:00   1
    ricemo
        5
    ricemo  
    OP
       2017-10-30 14:02:15 +08:00
    @jlsk ??什么
    @pynix 不知道呀
    @Event 模拟运行这段是什么意思,请求的时候加了 cookie 和 headers
    ricemo
        6
    ricemo  
    OP
       2017-10-30 14:03:35 +08:00
    @402124773 谢谢,感觉情况一样,我试试
    vtwoextb
        7
    vtwoextb  
       2017-10-30 14:07:53 +08:00
    重启一下路由用爬虫再爬 有问题么?
    Event
        8
    Event  
       2017-10-30 14:09:51 +08:00
    @0xvincebye 这似乎是一段 Javascript 模拟运行后拿运行 js 后的 cookie 加上去
    shiduu
        9
    shiduu  
       2017-10-30 14:21:36 +08:00
    网上搜索了下,这是知道创宇云安全上的反爬功能。
    402124773
        10
    402124773  
       2017-10-30 14:32:23 +08:00
    一段 Javascript 混淆后的代码,主要两个作用,
    1.屏蔽一些不能执行 js 的爬虫,屏蔽模拟浏览器的爬虫。
    2.设置特定的 cookies。下次发送请求的时候,返回就正常了。
    ricemo
        11
    ricemo  
    OP
       2017-10-30 14:54:54 +08:00
    @vtwoextb
    @Event
    @shiduu
    @402124773
    这是知道创宇加速乐的一个反爬虫机制,看到上面文章里的分析文章,加上了__jsl_clearance 和__jsluid 值还是返回 521
    shiduu
        12
    shiduu  
       2017-10-30 15:35:10 +08:00
    难道升级了策略。。。
    gaojin
        13
    gaojin  
       2017-10-30 15:39:34 +08:00
    第一次请求会 set-cookies,
    把 cookie 带上再请求一次就可以了。

    第一次请求


    第二次请求
    afeicool
        14
    afeicool  
       2017-10-30 15:44:31 +08:00
    curl 'http://www.cnvd.org.cn/flaw/list.htm' -H 'Host: www.cnvd.org.cn' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: http://www.cnvd.org.cn/' -H 'Cookie: __jsluid=f669604ddecafb6c40a2a3829f39742f; __jsl_clearance=1509349167.145|0|wMTYJSR%2Fl5astzWDPI574Q%2FYYOc%3D; JSESSIOnID=522CF658C2D3044420A6B1FFC1EE004E; bdshare_firstime=1509349155230' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Cache-Control: max-age=0'
    afeicool
        15
    afeicool  
       2017-10-30 15:45:02 +08:00
    把头带全就行了,这网站把你作宝搞
    dreammes
        16
    dreammes  
       2017-10-30 16:01:33 +08:00
    楼上都说了方法了
    ricemo
        17
    ricemo  
    OP
       2017-10-30 16:43:52 +08:00
    @shiduu 这个不太清楚,可能是我姿势不对
    @gaojin 我自己加了__jsl_clearance 和__jsluid 还是 521
    @afeicool 你试过成功了吗?我没成功,还是 521
    @dreammes 这个确实没成功
    lqf96
        18
    lqf96  
       2017-10-30 17:04:08 +08:00
    额,就不能 puppetter+headless chrome 直接爬么
    headless browser 省力的多
    afeicool
        19
    afeicool  
       2017-10-30 19:01:37 +08:00
    试了一下,确实有点麻烦,不太清楚他的机制,不过用 puppetter 是一定可以的。我觉得非常规站就用非常规的爬法。
    gaojin
        20
    gaojin  
       2017-10-31 11:49:26 +08:00   1
    @0xvincebye 看代码,全部 copy headers 是可以的
    aru
        21
    aru  
       2017-10-31 19:24:51 +08:00
    先用 selenium 来访问首页,然后将 cookie 传给 requests
    接下来就可以用 requests 来抓取了
    注意 requests 和 selenium webdriver 的 user-agent 要一致
    ilittlesun
        22
    ilittlesun  
       2018-08-31 17:59:09 +08:00 via Android
    请问一下楼主最后怎么解决这个问题哒
    smartv
        23
    smartv  
       2020-07-11 18:04:29 +08:00
    @gaojin 你截图用这个是什么工具呀? 最近想爬个网站也遇上 加速乐 cookie 问题了,可否付费请教一下你
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     895 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 21:52 PVG 05:52 LAX 13:52 JFK 16:52
    Do have faith in what you're doing.
    ubao msn 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