今天在写一个爬虫的时候遇到了一个情况,http返回的状态码是521,应该是一个安全公司的反爬技术,返回的response是一段js代码,用来设置cookies,只有设置了cookies的session才能正常访问,以前遇到的情况,都是一段混淆过的js代码,基本没办法反编译,都是通过python的第三方库来获取结果,今天好不容易遇到一个js代码还算清晰的,无聊的鱼友们没事拿来练练手,最好先自己写写,再来看我的代码。
目的是给一段js,得到想要的字符串js1 = "<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('_')+('s')+('=')+(-~{}+'')+((1+[2])/[2]+'')+(~~[]+'')+((+true)+'')+(-~false+'')+(-~[]+'')+(~~{}+'')+(3+5+'')+(8+'')+((+false)+'')+('.')+([2]*(3)+'')+(3+'')+(2+2+'')+('|')+('-')+(-~false+'')+('|')+('W')+('h')+('h')+('u')+('Z')+('h')+('l')+('%')+(2+'')+('F')+('%')+(+!+[]*2+'')+('F')+('y')+('%')+((1<<1)+'')+('B')+(~~[]+'')+('D')+('r')+('c')+('U')+('V')+(9-1*2+'')+('P')+('I')+(4+5+'')+('a')+('J')+('E')+('t')+('R')+('c')+('%')+((1+[2]>>2)+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+(3+'')+(3+3+'')+(~~''+'')+(~~[]+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>"
js2 = "<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('=')+(-~{}+'')+((1+[2])/[2]+'')+(~~[]+'')+((+true)+'')+(-~false+'')+(-~[]+'')+(~~{}+'')+(3+6+'')+(4+'')+((1<<2)+'')+('.')+(1+4+'')+(7+'')+(2+5+'')+('|')+('-')+(-~false+'')+('|')+('I')+(2+'')+('k')+('R')+((1+[2])/[2]+'')+('X')+('h')+(2+5+'')+('N')+('q')+('D')+('S')+('P')+('G')+('B')+('a')+('u')+('G')+('c')+('H')+('H')+(-~[5]+'')+('j')+('F')+(+!+[]*2+'')+('u')+(4+4+'')+('%')+((1+[2]>>2)+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+(3+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>"
js3 = "<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('=')+(-~{}+'')+((1+[2])/[2]+'')+(~~[]+'')+((+true)+'')+(-~false+'')+(-~[]+'')+(-~false+'')+(~~false+'')+((+[])+'')+((1+[2])/[2]+'')+('.')+(2+7+'')+(8+'')+('|')+('-')+(-~false+'')+('|')+('v')+('x')+('x')+('c')+('F')+('s')+('l')+('U')+(1+2+'')+(-~[5]+'')+('S')+(+!+[]+'')+('Y')+(~~false+'')+(-~[2]+'')+((1<<2)+'')+('T')+('K')+('b')+(4+5+'')+('%')+(+!+[]*2+'')+('F')+(9+'')+('W')+(~~''+'')+((1+[0])/[2]+'')+('I')+('g')+('%')+(-~[2]+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+((1|2)+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>"
js_list = [js1, js2, js3]
def js_to_str(js):
if __name__ == '__main__':
for e in js_list:
print(js_to_str(e))
得到的结果应该是:__jsl_clearance_s=1601110880.634|-1|WhhuZhl%2F%2Fy%2B0DrcUV7PI9aJEtRc%3D;max-age=3600;path=/
__jsl_clearance=1601110944.577|-1|I2kR6Xh7NqDSPGBauGcHH6jF2u8%3D;max-age=3;path=/
__jsl_clearance=1601111006.98|-1|vxxcFslU36S1Y034TKb9%2F9W05Ig%3D;max-age=3;path=/
有兴趣的可以研究一下,最佳就给代码清晰简单的,我的代码在下面
|