admin 管理员组

文章数量: 887016

一、前言

大概是一个月前就开始做淘宝的爬虫了,从最开始的用selenium用户配置到selenium模拟登录,再到这次的post请求模拟登录。一共是三篇博客,记录了我爬取淘宝网的经历。期间也有朋友向我提出了不少问题,比如滑块失败,微博登录失败等,可以说用selenium模拟登录这方面,坑特别多,直接加载用户配置又很笨重,效率低下。所以这次尝试构造post请求表单,模拟登录。

二、模拟登录

1)用浏览器走一遍登录过程

先把淘宝网的cookies全部清除,然后访问淘宝:https://www.taobao,这时候是不需要登录的。

在搜索框搜索iphone,立即跳出了登录页面,它的url是:https://login.taobao/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao%2Fsearch%3Fq%3Diphone%26imgfile%3D%26commend%3Dall%26ssid%3Ds5-e%26search_type%3Ditem%26sourceId%3Dtb.index%26spm%3Da21bo.2017.201856-taobao-item.1%26ie%3Dutf8%26initiative_id%3Dtbindexz_20170306&uuid=f6dd176ff336683f5d47fc1cb16504af

很长很长,但标红的这部分url很重要,redirectURL是重定向url,登录后会跳转到这个url,当然这个是经过url编码的。


其余后面的参数很乱,不知道有用没用,先试一下,把后面的参数去掉,访问https://login.taobao/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao%2Fsearch%3Fq%3Diphone看看能不能行:


可以进入登录页面,那能不能登录呢?


好,正如上面所说,跳转到了这个url。

2)用抓包工具分析登录过程

既然可行,那么接着再来一次,这次看看这个过程都发起了哪些请求,提交了哪些数据。(别忘记清除cookies)

可以使用浏览器开发者模式也可以使用抓包工具Fiddler,使用浏览器的话要打开Preserve log


我用的是Fiddler

设置抓取的User-Agents为Chrome


直接访问:https://login.taobao/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao%2Fsearch%3Fq%3Diphone

点击登录。查看请求记录。


这是两个非常重要的url

第一个是最开始访问的登录页面,一个普通的get请求,第二个就不同了,它是一个post请求,其中表单包含了大量的数据信息


内容虽然很多,但经过我多次的测试和比对后,发现了如下几条规律:

1、loginId一眼就可以看出是账号,ua猜测为一种加密后的用户标识,password2猜测为加密后的密码。这三条信息可以当作固定值反复使用

2、_csrf_token, umidToken, hsiz隐藏在登录页面里

3、其他的都是不变的

3)代码实战

文件名为login.py,类名为Login

class Login:
    """
    模拟登录并获取cookies
    """

    def __init__(self, u

本文标签: 跳转 淘宝 页面 商品 列表