用python 模拟了steam登陆,下一步打算尝试着读取库存信息

import sys
sys.path.append(r'E:\anaconda\Lib\site-packages')
import requests
import time
import rsa
import base64
import execjs
from Crypto.Cipher import PKCS1_v1_5
import ssl
import timeget_rsakey_url = 'https://store.steampowered.com/login/getrsakey/'
login_url = 'https://store.steampowered.com/login/dologin/'
login_headers = {'Referer':'https://store.steampowered.com/login/','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}req = requests.session()
sign_dict = {'account_incorrect_sign':1,'guard_fail_sign':1}def get_login_rsakey():#第一次输入账号密码错误后,会被置0,应该在开始置1 sign_dict['guard_fail_sign'] = 1                    username = input('input your steam account number:')password = input('input your steam account password:')data = {'donotcache':str(int(time.time()*1000)),'username':username}getkey_html = req.post(get_rsakey_url,data=data,headers=login_headers).json()    pub_mod = getkey_html.get('publickey_mod')pub_exp = getkey_html.get('publickey_exp')timestamp = getkey_html.get('timestamp')
#加密密码    RSAwith open('rsa.js',encoding='utf-8') as f:jsdata = f.read()password_encrypt = execjs.compile(jsdata).call('getpwd',password,pub_mod,pub_exp)return username,password_encrypt,timestamp  def login_request(_data_):login_data = {'donotcache':str(int(time.time()*1000)),'username':_data_[0],'password':_data_[1],'twofactorcode':'','emailauth':'','loginfriendlyname':'','captchagid':'-1','captcha_text':'','emailsteamid':'','rsatimestamp':_data_[2],'remember_login':'false',}response_data = req.post(login_url,data=login_data,headers=login_headers).json() print('\nlogin_html\n',response_data)return response_data,login_datadef input_guard_number(_data_):html_data = _data_[0]login_data = _data_[1]
#没有手机令牌的账号,在输入过邮箱令牌一次后可以直接登录if (html_data.get('success') == True) and (html_data.get('login_complete') == True):sign_dict['guard_fail_sign'] = 0sign_dict['account_incorrect_sign']= 0return html_data
#没有手机令牌,第一次登录需要邮箱验证码elif html_data.get('emailauth_needed') == True:email_guard_number = input('input the email guard number:')login_data['twofactorcode'] = email_guard_number sign_dict['account_incorrect_sign']= 0return req.post(login_url, data=login_data, headers=login_headers).json()
#输入手机令牌elif (html_data.get('success') == False) and (html_data.get('message') == ''):phone_guard_number = input('input the phone guard number:')login_data['twofactorcode'] = phone_guard_numbersign_dict['account_incorrect_sign']= 0return req.post(login_url, data=login_data, headers=login_headers).json()
#输入账号密码错误elif (html_data.get('success') == False) and (html_data.get('message') == 'The account name or password that you have entered is incorrect.'):sign_dict['guard_fail_sign'] = 0print('\nthe input incorrect !!! try again\n')#判断是否登录成功
def if_login_successful(login_with_guard_html):if login_with_guard_html != None:       if (login_with_guard_html.get('success') == True) and (login_with_guard_html.get('login_complete') == True):sign_dict['guard_fail_sign'] = 0print('\nsuccessfully login')   if __name__ == '__main__':
#账号密码错误,重新输入账号密码while(bool(sign_dict['account_incorrect_sign'])):data = get_login_rsakey() data2 = login_request(data)
#令牌输入错误,重新输入令牌while(bool(sign_dict['guard_fail_sign'])):html_data = input_guard_number(data2)if_login_successful(html_data)

python模拟登陆steam相关推荐

  1. python模拟登陆 验证码el_python 模拟登陆github的示例

    # -*- coding: utf-8 -*- # @Author: CriseLYJ # @Date: 2020-08-14 12:13:11 import re import requests c ...

  2. python模拟登陆163邮箱并获取通讯录

    From: http://hi.baidu.com/fc_lamp/blog/item/2466d1096fcc532de8248839.html python模拟登陆163邮箱并获取通讯录 #-*- ...

  3. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?

    前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...

  4. python模拟登陆 验证码el_python 模拟登陆163邮箱

    import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium ...

  5. Python模拟登陆大连交通大学教务在线

    Python模拟登陆大连交通大学教务在线,使用wxPython做的界面,urllib2发送数据,可以实现登陆后获取首页登陆数据的功能,目前只做登陆,其他的暂时没做 Python2.7代码 # -*- ...

  6. 使用Python模拟登陆12306并全自动下单

    最近一段时间一直在研究用Python模拟登陆12306网站并自动刷票下单,经过一段时间的摸索,终于完成了代码,实现了12306刷票的功能.话不多说,先给大伙儿看看成果.我录制了一段时间,展示了自动刷票 ...

  7. python模拟登录qq账号密码_最新的Python模拟登陆QQ脚本,一键批量登录,强行过验证!...

    Python模拟QQ批量登陆脚本,以下代码附带解释以便于理解思路. Python代码: #coding=utf-8 import os import time import win32gui impo ...

  8. python github登陆_用Python模拟登陆GitHub并获取信息

    最近在研究如何对搜狗搜索公众号文章进行爬取,由于需要用到Cookies,所以这回先了解下Cookies的相关知识. 搜狗的反爬有点厉害,即使我用了高匿代理,它还是会提醒我IP访问过于频繁,然后跳转验证 ...

  9. python模拟登陆

    简单使用python(python3.7)模拟登陆github # !/usr/bin/env python # -*-coding:utf-8-*- """ @Auth ...

  10. python怎么读取github_如何通过Python模拟登陆Github?

    当我们访问一个网站,输入账号密码进入网页之后,再点击网页中的其他链接,跳转到另一个网页时,浏览器并不要求我们重新再输入一次账号密码,这是为什么呢? 原因是,当我们第一次输入账号密码后,服务器会返回给我 ...

最新文章

  1. dedecms5.7 联动类型无法显示
  2. 【项目管理】《流浪地球》剧情中的项目管理相关知识
  3. java23中设计模式——行为模式——Memento(备忘机制)
  4. Python-学生信息管理系统.exe
  5. 继续教育计算机组成原理a试卷,计算机组成原理模拟试题及答案西工大.doc
  6. 猜算式,四个两位数字不可以重复(一)
  7. 微星电脑win、ctrl等组合键时而失灵
  8. 小米笔记本双固态硬盘安装win10+ubantu20双系统 实录
  9. Linux下搭建Oracle11g RAC
  10. table组件抽离封装
  11. math_数集(数集符号)/算数运算中英文对照
  12. Linux系统查看不到IP地址的解决方法(虚拟机)
  13. 华云数据董事长许广彬接受中央电视台采访:推动职业教育发展
  14. c语言中的除号什么作用,c语言中除号用什么表示
  15. iphone4安装使用微信
  16. 史上最详细的RACI(责任分配矩阵)使用方法及实例详解
  17. 小程序canvas文字信息绘制图片,模拟器正常保存图片,真机无法保存图片报错downloadFile:fail downloadFile protocol must be http or https
  18. Eclipse搭建scala环境(解决“JDT weaving is currently disabled”)
  19. 逆风飞扬 吴士宏_打工女皇吴士宏:从初中辍学的患癌小护士到微软中国总经理...
  20. CC js----android 平台 java与js互调 , ios平台 Objective-c与js互调的例子

热门文章

  1. 来兄弟连了,你还在用面向过程唱高音歌曲的你就OUT了
  2. 1.84亿月活换来400亿港元估值,网易云音乐的钱途在哪儿?
  3. unity学习笔记-3dmax人型动画导入unity需要注意的事项
  4. 图解物联网---物联网基础知识
  5. 不按Ctrl键实现select标签多选操作
  6. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-ISE的获取和使用
  7. matlab 数字波束合成,dbf数字波束合成
  8. 计算机毕业设计JAVA微美试营销系统mybatis+源码+调试部署+系统+数据库+lw
  9. jeb java_jeb2 java 脚本插件
  10. 单片机程序加解密方法和注意事项