python爬取js反爬网页_python爬虫反爬问题02:js加密之steam登录

爬虫登录steam:

仅用于学习,请在查看后24小时内删除,一切商用行为和非法行为与本人无关

1.简单测试分析登录流程

可以看到这边有两个参数:用户名和不知名的参数,继续:

查看js文件发现是获取时间戳!

该请求的响应为:

先记住这些key!

可以看到该请求就是在验证用户名密码了。

查看具体的参数

找到password的加密方式,可以看到前一个链接响应参数也被使用

找到Rsa方法

此时我们只需要使用Python代码,执行这些js代码,将自己的密码使用这些js进行加密,即可。

具体代码:

# -*- coding:utf-8 -*-

'''

----------------------------

@Auther:浮生六意

@time:2020/4/5

----------------------------

'''

import json

import time

import requests

import execjs

session = requests.session()

# 时间戳

ts = int(time.time() * 1000)

headers = {

'Host': 'store.steampowered.com',

'Referer': 'https://store.steampowered.com/login/?redir=&redir_ssl=1',

'User-Agent': 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.163Safari/537.36',

}

data = {

'donotcache': ts,

'username': 'username'

}

req = session.post('https://store.steampowered.com/login/getrsakey/', data=data, headers=headers)

req = json.loads(req.text)

# mod参数

publickey_mod = req['publickey_mod']

# publickey_exp 参数

publickey_exp = req['publickey_exp']

# timestamp参数

timestamp = req['timestamp']

# 加密密码js解析

with open(r'./steam.js', encoding='utf-8') as f:

jsdata = f.read()

pwd = execjs.compile(jsdata).call('test', 'pwd', publickey_mod, publickey_exp)

ts = int(time.time() * 1000)

# 登录验证

data = {

'donotcache': ts,

'password': pwd,

'username': 'username',

'twofactorcode': '',

'emailauth': '',

'loginfriendlyname': '',

'captchagid': '-1',

'captcha_text': '',

'emailsteamid': '',

'rsatimestamp': timestamp,

'remember_login': 'false',

}

login_scccess = session.post(url='https://store.steampowered.com/login/dologin/', data=data)

print(login_scccess.text)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值