C#自动领取淘金币_通讯数据分析
用C#实现自动领取淘金币是我自学C#的动力之一。经过一番学习,我明白了要实现用C#实现自动领取淘金币,首先要学会分析浏览器与淘宝服务器之间的通讯数据,根据这些数据得出清晰的实现流程,然后再根据该流程编写相关代码。
1. 参考资料
在分析数据之前,我先学习了螳螂虾的《C#淘宝金币》与kaedeen的《每日自动领取淘金币java httpclient4》。我发现这两篇文章有一个共同点:获取淘金币的URL的前部均为”http://vip.taobao.com/home/grant_everyday_coin.htm?“。我按照螳螂虾的做法,先获取了tb_token,然后组装成新的URL去访问,但结果是这样的:
这可能是因为大淘宝的系统更新所致,因此我必须要自己分析数据。
2.抓取登录领淘金币的通讯数据
我用的抓取工具是火狐的httpfox,操作步骤如下:直接点击我的淘宝(每天必上淘宝,因此帐号在假登录状态)–>(开始抓取数据)领取淘金币–>(要求先登录)–>登录后领取成功(停止抓取数据)。
抓取的信息有很多条,那么到底该关注哪一条呢?虽然我知道Method为POST的需要重点关注,但领取淘金币的动作的Method可能不是POST。经过初步观察,Type为”application/json”,“Redirect to”, “text/html”可以仔细揣摩,看看它与领取淘金币是否有关系。在这些类型的信息中,可以看到_tb_token,t,cna,_umdata等内容。
3.经过海底捞针般的搜索后,我终于找到了貌似正确的URL
该链接的结构与我所参考的两位大侠所使用的链接结构类似,包含checkcode,t,tb_token,enter_time,ua,ksts等信息,那么我假设它就是领取淘金币的URL,开始对它进行分析。
4.同一帐号不同时间登录,不同帐号登录时URL的差异
找到正确的URL之后,问题就来了:如果我用不同的帐号在同一台电脑上登录,这些信息的值是否相同?如果用同样的帐号在不同时间登录,这些关键信息又是否相同呢?
我用了另外一个帐号分别在昨天和今天领取了淘金币(一个帐号一天只能领一次),数据如下:
由以上实验数据可知,同一帐号不同时间领取淘金币时或者不同帐号同一时间段内领取淘金币时 ,t,tb_token,enter_time,ua,ksts等信息的取值均不一样。
另外,现在回溯kaedeen的《每日自动领取淘金币java httpclient4》, 在kaedeen相应文章的代码中,t与enter_time是这样获取的。
1 2 |
long t=System.currentTimeMillis(); long enter_time=t-12345; |
但现在最新的数据与这两行代码并不相符。因此想实现自动领取淘金币,我必须从登录淘宝后的一系列通讯数据中来找到领取淘金币所需要的这些信息,然后在拼装成领取淘金币所需要的URL提交给服务器,下一篇文章将记录此过程。