爬虫登录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)