记第一次破解js加密代码

 

首先,我要爬的是这个网站:http://www.66ip.cn/nm.html,我想做个直接调用网站的接口获取代理的爬虫

 

 

这个接口看上去似乎很简单,直接输入需要的代理条件后,点击提取即可

点击提取后就是一个个ip了,

废话不多说,按f12点开, 

 

 

发现需要两个cookie值,不知道从哪来,删掉cookie后,刷新页面再看看。 

同样有这两个cookie,不过是新值,并且出了jquery.js没别的文件了。奇怪了,cookie怎么出来的,不过可以注意到被重定向了。

所以,把f12的net work下的 preserve log 勾选(新手才学到的),这样就可以看到所有的包了

 

三、

果然找到一个cookie,但是还有一个cookie值呢?查看这个521报文看不到内容,使用postman试试(这里一定要注意,今天被坑了很久,postman是依托于chrome的,chrome出于安全考虑,限制了postman的cookie功能,需要下载插件,点击一下会跳转到谷歌应用商店postman interceptor,然后在postman中打开改插件即可。还有要注意的是,chrome上的cookie,是会被postman使用的,记得删掉。下图的postman interceptor点开了)

 

 四,然后发现果然执行了一段js代码,拿去格式化,简单修改,使用nodejs运行了一下,其实就是一句,document.cookies='***'的代码

 

 五,这个还算好做,分离出来就行,然后发现,诶,每次没cookie的请求都是不同的js代码,干脆就提取出js代码,然后,替换部分js代码, 即可获取_ydclearance

@staticmethod
    def get_66ip_cookies(url):
        """
        66ip的加密cookie破解
        :param self:
        :param url:
        :return:
        """
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                                 ' Chrome/68.0.3440.106 Safari/537.36'}
        res = requests.get(url, headers=headers)
        yd_cookie = res.cookies['yd_cookie']
        groups = re.search('<script language="javascript"> window.onload=setTimeout\("(.*?)", 200\); (.*?)</script>',
                           res.text)
        x = groups.group(1)
        y = groups.group(2)
        y = y.replace('eval("qo=eval;qo(po);");', 'result = /_ydclearance=(.*?);/.exec(po)[1]; return result;')
        jsfunc = execjs.compile(y)
        _ydclearance = jsfunc.call(x[:2], re.findall('[0-9]+', x)[0])
        return yd_cookie, _ydclearance

 

posted @ 2019-01-06 00:10  happy_codes  阅读(1983)  评论(0编辑  收藏