python爬虫之js逆向(一)

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)

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的黑蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值