python爬虫之js逆向(一)

写在前面

现在各种反爬手段很多,虽然我在工作的时候并没有遇到过(我的工作就是爬虫,但是基本上都是爬外网,google,都是企业级爬虫,很少像这样写垂直爬虫)。在平时的技术交流群中经常看到大神们说一些我没遇到过的的反爬手段,为了能够插上话题,为了升职加薪,今天终于下定决心开始学习各种反爬,并在此记录分享心得。本人刚刚上班没几个月,小白一个,有不对的地方希望大神能够指教。

网站分析

目标网站:http://www.300600900.cn/

首先当然是抓包分析返回的数据
或者直接将链接放到代码里面,将响应内容打印出来。
如果一样的话说明直接就能获取到,否则的话可能就是对网页进行了处理

在这里插入图片描述上面是用代码请求返回的响应,并没有返回你想要的数据。
那么问题来了,请随我接着往下看

解析

道高一尺,魔高一丈。打开浏览器f12.我们进行抓包分析,既然返回的是js,那么我们就从js下手。
因为返回的js里面有location 的变量,说明进行了跳转,其中重定向的链接是在第一次请求返回的响应里,用 JS 生成的,我们把响应下来的js扣下来,然后用python进行模拟js。
好了现在已经将js代码完全抠下来了,创建js文件,放入和脚本同样的目录等待导入。
现在我们开始进行js加载,其中有些用不到的参数,直接删掉
比如参数 curlocation 是当前页面的 href,没有用到,反而会给我们调试增加阻碍
因为我们没有 window 这个对象。接下来代码实现:

import requests
import execjs
node = execjs.get() #通过python代码去执行JavaScript代码的库
file = 'baikewangjia.js'
ctx = node.compile(open(file).read())
data = ctx.eval("data") #去执行js里面的函数变量
verify_data = ctx.eval("verify")
print(data, verify_data)

headers = {
    'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
    }
url = "http://www.300600900.cn/"
session = requests.session()
session.get(url, headers=headers) #获取session
cookies = data.split('=')
session.cookies.set(cookies[0], cookies[1]) #设置cookies
next_url = url + '?security_verify_data=' + verify_data
session.get(next_url, headers=headers)
print(session.cookies)
cookies = requests.utils.dict_from_cookiejar(session.cookies)
res = session.get(url, headers=headers, cookies=cookies)
res.encoding = res.apparent_encoding
print(res.text)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐