C# 模拟登陆淘宝

      本文说描述的C#模拟登录淘宝的方案,是将文章《Python爬虫实战五之模拟登录淘宝并获取所有订单中所述的用Python实现的登录方法用C#来实现,登录成功后可以获取到用户的昵称,信用等级,购物车,已购买宝贝等等信息,理论上而言应该可以在此前提下实现自动拍下宝贝的功能。

     *************20160813更新****************

     相关源码在github上的链接:https://github.com/livezingy/TaoBao。目前该方案已失效,相关源码仅供参考。

    *************20160813更新****************

     不过严格来说,目前实现的模拟登录算不上真正意义上的成功,因为登录时所用的UA与加密密码是通过抓包工具抓取并且直接写入的。我觉得真正的模拟登录应该向登录微博那样,只要输入用户名与密码,模拟登录程序可以自动对用户名和密码进行处理并组织,然后可以直接提交相应的POST数据。不过TB的用户名与密码加密处理过于复杂,不是我等新手能轻易弄懂的。这是后话,先来Show一下我设计的简陋的登录界面,然后再来介绍模拟登录详情。


     实现模拟登录淘宝的整理思路如下:

     1. 手动到浏览器获取 ua 码以及加密后的密码,同一个账号只获取一次即可在任意时刻进行登录(在淘宝ua与加密算法未变更的前提下)。

     我和原参考文献的作者一样用的是火狐浏览器自带的Firebug获取Ua与加密密码。在抓取数据前,需要提前在浏览器中设置一下显示持续日志,在网络选项卡的界面下登录淘宝。登录成功后,在网络选项卡中选择login.taobao.com且方法为POST的那一行并“显示请求细节”,在“参数”中即可找到ua以及TPL_password_2,复制这两个宝贝,在程序中按照该参数列表的格式组织POST数据,格式如下:

      2. 向登录界面发送登录请求,POST 一系列参数,包括 ua 码以及密码等等,获得响应,提取验证码图像。

      目前验证下来,每一次登录都需要输入验证码。原参考文献中是弹出浏览器在浏览器中输入验证码,我实现时先获取验证码的链接,然后获取验证码显示到登录界面中,在登录界面中输入再实现登录。淘宝的验证码链接每一次请求都会出现不同的验证码图片,我曾经特别纠结这个问题:我请求验证码链接得到的图片应该是第二次请求该链接了(登录的第1步即会请求一次该验证码链接),淘宝会不会认为这个验证码并非第一次输入的验证码而导致我的这种操作无效呢?

      事实证明我的担心是多余的,只要输入的是当前链接下的验证码都是可以成功登录的,其实我的再次请求也就相当于我们看不清验证码时刷新了一下而已。

3. 用户手动输入验证码,重新加入验证码数据再次用 POST 方式发出请求,获得响应,提取 J_Htoken。
4. 利用 J_Htoken 向 alipay 发出请求,获得响应,提取 st 码。
5. 利用 st 码和用户名,重新发出登录请求,获得响应,提取重定向网址,存储 cookie。

   后续可利用该cookie 向其他个人页面如订单页面发出请求,获得响应,提取订单详情以及实现宝贝购买等动作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub