如图因为一些原因需要爬取 http://www.cnvd.org.cn/漏洞信息 然而请求返回状态为 521,并返回一串代码
正常访问没问题,curl,requests 请求就返回 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>
1
jlsk 2017-10-30 13:33:05 +08:00
你连***ra***t 都不知道还做什么爬虫啊?
|
2
pynix 2017-10-30 13:44:12 +08:00 via iPhone
这代码有点像 brainfuck
|
3
Event 2017-10-30 13:55:58 +08:00
直接模拟运行这段取 cookies 试试看
|
4
402124773 2017-10-30 14:00:51 +08:00 1
|
5
0xvincebye OP |
6
0xvincebye OP @402124773 谢谢,感觉情况一样,我试试
|
7
vtwoextb 2017-10-30 14:07:53 +08:00
重启一下路由用爬虫再爬 有问题么?
|
8
Event 2017-10-30 14:09:51 +08:00
@0xvincebye 这似乎是一段 javascript 模拟运行后拿运行 js 后的 cookie 加上去
|
9
shiduu 2017-10-30 14:21:36 +08:00
网上搜索了下,这是知道创宇云安全上的反爬功能。
|
10
402124773 2017-10-30 14:32:23 +08:00
一段 javascript 混淆后的代码,主要两个作用,
1.屏蔽一些不能执行 js 的爬虫,屏蔽模拟浏览器的爬虫。 2.设置特定的 cookies。下次发送请求的时候,返回就正常了。 |
11
0xvincebye OP |
12
shiduu 2017-10-30 15:35:10 +08:00
难道升级了策略。。。
|
13
gaojin 2017-10-30 15:39:34 +08:00
第一次请求会 set-cookies,
把 cookie 带上再请求一次就可以了。 第一次请求 第二次请求 |
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'
|
15
afeicool 2017-10-30 15:45:02 +08:00
把头带全就行了,这网站把你作宝搞
|
16
dreammes 2017-10-30 16:01:33 +08:00
楼上都说了方法了
|
17
0xvincebye OP |
18
lqf96 2017-10-30 17:04:08 +08:00
额,就不能 puppetter+headless chrome 直接爬么
headless browser 省力的多 |
19
afeicool 2017-10-30 19:01:37 +08:00
试了一下,确实有点麻烦,不太清楚他的机制,不过用 puppetter 是一定可以的。我觉得非常规站就用非常规的爬法。
|
20
gaojin 2017-10-31 11:49:26 +08:00 1
@0xvincebye 看代码,全部 copy headers 是可以的
|
21
aru 2017-10-31 19:24:51 +08:00
先用 selenium 来访问首页,然后将 cookie 传给 requests
接下来就可以用 requests 来抓取了 注意 requests 和 selenium webdriver 的 user-agent 要一致 |
22
ilittlesun 2018-08-31 17:59:09 +08:00 via Android
请问一下楼主最后怎么解决这个问题哒
|