网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- python模拟登录宝网页
- 获取登录用户的所有订单详情
- 学会应对出现验证码的情况
- 体会一下复杂的模拟登录机制
探索部分成果
- 宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位长度的密码。
- 宝在登录时必须要输入验证码,在经过几次尝试失败后最终获取了验证码图片让用户手动输入来验证。
- 宝另外有复杂且每天在变的 ua 加密算法,在程序中我们需要提前获取某一 ua 码才可进行模拟登录。
- 在获取最后的登录 st 码时,历经了多次请求和正则表达式提取,且 st 码只可使用一次。
整体思路梳理
- 手动到浏览器获取 ua 码以及 加密后的密码,只获取一次即可,一劳永逸。
- 向登录界面发送登录请求,POST 一系列参数,包括 ua 码以及密码等等,获得响应,提取验证码图像。
- 用户输入手动验证码,重新加入验证码数据再次用 POST 方式发出请求,获得响应,提取 J_Htoken。
- 利用 J_Htoken 向 alipay 发出请求,获得响应,提取 st 码。
- 利用 st 码和用户名,重新发出登录请求,获得响应,提取重定向网址,存储 cookie。
- 利用 cookie 向其他个人页面如订单页面发出请求,获得响应,提取订单详情。
是不是没看懂?
没事,下面我将一点点说明自己模拟登录的过程,
希望大家可以理解。
前期准备
由于宝的 ua 算法和 aes 密码加密算法太复杂了,
ua 算法在宝每天都是在变化的,
不过,这个内容你获取之后一直用即可,
经过测试之后没有问题,一劳永逸。
那么 ua 和 aes 密码怎样获取呢?
我们就从浏览器里面直接获取吧,打开浏览器,
找到宝的登录界面,按 F12 或者浏览器右键审查元素。
在这里我用的是火狐浏览器,
首先记得在浏览器中设置一下显示持续日志,
要不然页面跳转了你就看不到之前抓取的信息了。
在这里截图如下
好,那么接下来我们就从浏览器中获取 ua 和 aes 密码
点击网络选项卡,这时都是空的,什么数据也没有截取。
这时你就在网页上登录一下试试吧,
输入用户名、密码,有必要时需要输入验证码,点击登录。
等跳转成功后,你就可以看到好多日志记录了,
点击图中的那一行 login.taobo.com,然后查看参数,
标题
你就会发现表单数据了,
其中就包括 ua 还有下面的 password2,
把这俩复制下来,我们之后要用到的。
这就是我们需要的 ua 还有 aes 加密后的密码。
输入验证码并获取J_HToken
代码如下:
import urllib
import urllib2
import cookielib
import re
import webbrowser
#模拟登录宝类
class Taobao:
#初始化方法
def \_\_init\_\_(self):
#登录的URL
self.loginURL = "平台不让发"python学习裙:903971231#
#代理IP地址,防止自己的IP被封禁
self.proxyURL = 'http://120.193.146.97:843'
#登录POST数据时发送的头部信息
self.loginHeaders = {
'Host':'login.taobao.com',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0',
'Referer' : 'https://login.taobao.com/member/login.jhtml',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection' : 'Keep-Alive'
}
#用户名
self.username = 'cqcre'
#ua字符串,经过宝ua算法计算得出,包含了时间戳,浏览器,屏幕分辨率,随机数,鼠标移动,鼠标点击,其实还有键盘输入记录,鼠标移动的记录、点击的记录等等的信息
self.ua = '191UW5TcyMNYQwiAiwTR3tCf0J/QnhEcUpkMmQ=|Um5Ockt0TXdPc011TXVKdyE=|U2xMHDJ+H2QJZwBxX39Rb1d5WXcrSixAJ1kjDVsN|VGhXd1llXGNaYFhkWmJaYl1gV2pIdUtyTXRKfkN4Qn1FeEF6R31TBQ==|VWldfS0TMw8xDjYWKhAwHiUdOA9wCDEVaxgkATdcNU8iDFoM|VmNDbUMV|V2NDbUMV|WGRYeCgGZhtmH2VScVI2UT5fORtmD2gCawwuRSJHZAFsCWMOdVYyVTpbPR99HWAFYVMpUDUFORshHiQdJR0jAT0JPQc/BDoFPgooFDZtVBR5Fn9VOwt2EWhCOVQ4WSJPJFkHXhgoSDVIMRgnHyFqQ3xEezceIRkmahRqFDZLIkUvRiEDaA9qQ3xEezcZORc5bzk=|WWdHFy0TMw8vEy0UIQE0ADgYJBohGjoAOw4uEiwXLAw2DThu9a==|WmBAED5+KnIbdRh1GXgFQSZbGFdrUm1UblZqVGxQa1ZiTGxQcEp1I3U=|W2NDEz19KXENZwJjHkY7Ui9OJQsre09zSWlXY1oMLBExHzERLxsuE0UT|XGZGFjh4LHQdcx5zH34DRyBdHlFtVGtSaFBsUmpWbVBkSmpXd05zTnMlcw==|XWdHFzl5LXUJYwZnGkI/VitKIQ8vEzMKNws3YTc=|XmdaZ0d6WmVFeUB8XGJaYEB4TGxWbk5yTndXa0tyT29Ta0t1QGBeZDI='
#密码,在这里不能输入真实密码,宝对此密码进行了加密处理,256位,此处为加密后的密码
self.password2 = '7511aa68sx629e45de220d29174f1066537a73420ef6dbb5b46f202396703a2d56b0312df8769d886e6ca63d587fdbb99ee73927e8c07d9c88cd02182e1a21edc13fb8e140a4a2a4b5c253bf38484bd0e08199e03eb9bf7b365a5c673c03407d812b91394f0d3c7564042e3f2b11d156aeea37ad6460118914125ab8f8ac466f'
self.post = post = {
'ua':self.ua,
'TPL\_checkcode':'',
'CtrlVersion': '1,0,0,7',
'TPL\_password':'',
'TPL\_redirect\_url':'http://i.taobao.com/my\_taobao.htm?nekot=udm8087E1424147022443',
'TPL\_username':self.username,
'loginsite':'0',
'newlogin':'0',
'from':'tb',
'fc':'default',
'style':'default',
'css\_style':'',
'tid':'XOR\_1\_000000000000000000000000000000\_625C4720470A0A050976770A',
'support':'000001',
'loginType':'4',
'minititle':'',
'minipara':'',
'umto':'NaN',
'pstrong':'3',
'llnick':'',
'sign':'',
'need\_sign':'',
'isIgnore':'',
'full\_redirect':'',
'popid':'',
'callback':'',
'guf':'',
'not\_duplite\_str':'',
'need\_user\_id':'',
'poy':'',
'gvfdcname':'10',
'gvfdcre':'',
'from\_encoding ':'',
'sub':'',
'TPL\_password\_2':self.password2,
'loginASR':'1',
'loginASRSuc':'1',
'allp':'',
'oslanguage':'zh-CN',
'sr':'1366\*768',
'osVer':'windows|6.1',
'naviVer':'firefox|35'
}
#将POST的数据进行编码转换
self.postData = urllib.urlencode(self.post)
#设置代理
self.proxy = urllib2.ProxyHandler({'http':self.proxyURL})
### 最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
![](https://img-blog.csdnimg.cn/d29631674929476f9c3b30f7ff58dff0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**