c#

利用飞哥的HttpHelper 1.3版本(因为我用VS2005开发,1.3报错少)实现模拟登录淘宝联盟并且下载淘宝客订单xls文件。现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复。我是第一次开发Http程序,请多包涵。

本次开发环境与工具如下:
IE9.0浏览器 + IE抓包插件HttpWatch +WIN7 64位系统 + VS2005 IDE + .NET 2.0框架
本想上传HttpWatch抓包插件,但由于文件超过9.6M的限制,无法提供了。请各位到google上面搜索下吧

测试时注意事项:
必须取消淘宝帐号登录保护http://110.taobao.com/protect/protect_web.htm

做这个程序关键是分析数据,只有数据分析出来了,才能动手写代码,当然您如果对HttpHelper类不熟悉的话,请参考飞哥相关的文章。

我看到好多人发文章都是直接发代码,我感觉没什么用,因为拿到代码后还要调试并且要揣摩代码的调用究竟有何用意,对于初学者(比如我)来说真的没有信心把它的代码看完,因为即使知道每句代码的含义,但却完全不知道他为什么要这么做,这么做的目的何在。所以授人以鱼,不如授人以渔。我的目的是要教会大家从如何分析数据开始直到把分析的结果写成代码。

下面来几张截图说明分析数据步骤:
第一步:在淘宝联盟www.alimama.com上面使用淘宝账号登录,输入账号密码点击登录后,截到如下数据,

(技巧:登录网站即POST数据,重点找POST方式,以及哪个网址中包含login字样,以及请求/回复流中是否包含有价值的信息,如:账号、密码或登录成功的提示信息等)
(思路:使用上面的技巧分析,发现有2个POST其中有个POST的网址包含login字样,并且请求流中包含用户名和密码,回复流中包含登录成功与否的提示,所以他就是我们要找的登录数据。)
现在我们知道了要POST的URL,即"https://login.taobao.com/member/login.jhtml",以及要POST的数据,还有服务器将会回复的内容,那么请看如下代码:
  private void Login()
        {         
            HttpItem item = new HttpItem();
            item.URL = https://login.taobao.com/member/login.jhtml;   
            item.Method = "post";          
            item.Postdata = string.Format("ua=056u5Ob……&TPL_username={0}&TPL_password={1}&...……", HttpUtility.UrlEncode(txtLoginId.Text.Trim()), HttpUtility.UrlEncode(txtPwd.Text.Trim()));
            item.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 
            item.Allowautoredirect = true;              
            HttpResult result = m_Http.GetHtml(item);
            string html = result.Html;//服务器回复的内容,它是json格式,包括message,token等字段,message为空为登录成功,否则不为空
            string cookie = result.Cookie;//保存cookie便于后面还要使用
Match m = Regex.Match(html, "(?<=,\"message\":\").*?(?=\",)");
            if (string.IsNullOrEmpty(m.Value))  //登录成功账号密码正确的情况下
            {
                Match token = Regex.Match(html, "(?<=\"token\":\").*?(?=\")");//捕获token的值,后面提交的网址中将要使用它
                if (!string.IsNullOrEmpty(token.Value))
                {
                 ……
               }
           }            
       }
如上代码所示,当访问请求提交后,服务器返回的json内容在变量html里面,其中message字段表示是否有错误,如:账号密码不正确,如果账号密码正确message字段值将为"",所以我们利用正则表达式捕获message的值用于判断账号密码是否正确。
(思路:我们发现回复的json里面除了message字段之外,还有个token字段,它有什么作用呢?先不着急,我们看看接下来的数据包里面有哪个地方包含了这个token数据。找到了!他就是接下来请求的网址)
另外token字段我们也要获取下来,因为下一个访问的网址要用到它。
第二步:根据捕获的token值拼装网址并继续访问,如下图

从上面得到的token值,经过拼装字符串得到下次访问的URL,即"https://passport.alipay.com/mini_apply_st.js?site=0&token={0}&callback=vstCallback62"。
(思路:既然上次访问的结果有价值,那么这次服务器返回的结果是否也有价值呢?我们看下结果,这次访问后服务器会返回一段js代码,其中包含一个"st"的值(看上图的红色框部分),我们发现下次请求的网址中真的用到了这个st哦!好兴奋)
同样,这次我们也像上次一样用正则表达式捕获"st”的值并且保存,因为后面要使用到它。
(小结:其实我一直在做一件事情,即:把这次访问的结果作为参数拼装一下将得到下次要访问的网址)
private void Login(){
                 ……
Match token = Regex.Match(html, "(?<=\"token\":\").*?(?=\")");//获取token值
                if (!string.IsNullOrEmpty(token.Value))
                {
                    item = new HttpItem();
                    item.Method = "get";
                    item.URL = string.Format("https://passport.alipay.com/mini_apply_st.js?site=0&token={0}&callback=vstCallback62", token.Value);
                    item.Accept = "application/javascript, */*;q=0.8";
                    result = m_Http.GetHtml(item);
                    html = result.Html;
                    cookie += result.Cookie;
                    Match st = Regex.Match(html, "(?<=\"st\":\").*?(?=\")");//捕获st的值,后面还要使用它
                   ……
              }
}

第三步:根据捕获的st值,继续访问,如下图

通过将上面得到的st值再次拼装下网址得到URL即https://login.taobao.com/member/vst.htm?st={0}&……TPL_username%3D{1}……&callback=jsonp75
,{0}处填写上一步的st,{1}处填写淘宝账号
(思路:这次返回的值是否有价值呢?我们看看下面的请求哪个网址中出现这个返回值。找到了!返回值url后面跟的就是下次要访问的网址,好神奇呀)
这次服务器同样会返回下一次要访问的网址,我们将他捕获出来它就是url字段(上图中红框标记),代码如下
private void Login(){
                      ……
Match st = Regex.Match(html, "(?<=\"st\":\").*?(?=\")");
                    if (st.Success)
                    {
                        item.URL = string.Format("https://login.taobao.com/member/vst.htm?st={0}&……TPL_username%3D{1}……&callback=jsonp75
", st.Value, txtLoginId.Text.Trim());
                        item.Cookie = cookie;
                        result = m_Http.GetHtml(item);
                        html = result.Html;
                        cookie += result.Cookie;
                        Match url = Regex.Match(html, "(?<=\"url\":\").*?(?=\")");
                        if (url.Success)
                        {
                             ……
                       }
}

第四步:我们继续访问这个url,服务器将会进行重定向三次,每次重定向的网址从上次的结果HttpResult.Header[Location]属性中获取,再赋值给item.URL进行访问。如下图

代码如下
private void Login()
{
       ……
       Match url = Regex.Match(html, "(?<=\"url\":\").*?(?=\")");
                        if (url.Success)
                        {
                            #region 这里HttpWatch中重定向三次
                            //阿里妈妈,阿里巴巴旗下网络营销平台
                            item.Method = "get";
                            item.Cookie = cookie;
                            item.URL = url.Value;//上次回复流中捕获的url
                            result = m_Http.GetHtml(item);//第1次重定向
                            cookie += result.Cookie;
                            item.URL = result.Header[HttpResponseHeader.Location];
                            item.Cookie = cookie;
                            result = m_Http.GetHtml(item);//第2次重定向
                            cookie += result.Cookie;
                            item.URL = result.Header[HttpResponseHeader.Location];
                            item.Cookie = cookie;
                            result = m_Http.GetHtml(item);//第3次重定向
                            cookie += result.Cookie; 
                            #endregion
                          ……
                       }
}

至此登录就完成了,接下来就是下载xls文件了。对于下载xls文件较简单,直接get方式提交网址,得到byte[]字节数组并利用FileStream类写到文件中。大家根据以上分析的思路学会分析才是最重要的,所以下载这部分就留给大家自已分析了。提示:下载观看我的源码+观察HttpWatch截获的数据2种方式相结合去分析,对于观察HttpWatch截获的数据主要观看他是POST还是GET方式,以及访问的地址和提交的COOKIE以及服务器返回的COOKIE,还有服务器的回复流这几个方面着手分析。

上面我在讲解的过程中分了4个步骤,是从第1步至第4步讲解的,其实我们在分析数据的时候应该首先从第4步开始一直回溯分析网址来源就得到了第1步。第4步中服务器发来的cookie才是最重要的,有了它才能访问淘宝联盟的首页(这个结论当然是通过几次试验得出的),但如果不进行第123步的话第4步的访问地址和cookie无法得出,所以第4步是分析数据的切入点,至关重要。

下载地址:

php部分

以前研究过,而且能登陆到淘宝,不晓得现在可行了

================================================

1.GET淘宝初始登陆页: https://login.taobao.com/member/login.jhtml

保存会话cookie

2.POST https://login.taobao.com/member/request_nick_check.do?_input_charset=utf-8 POST{username,ua}

获取到json字符串里面包含验证码地址

3.GET验证码地址,识别验证码,放到登陆参数里

4.POST登陆地址:https://login.taobao.com/member/login.jhtml 包含会话cookie

5.登陆通过会输出JSON字符串 包含token值

6.GET https://passport.alipay.com/mini_apply_st.js?site=0&token=$token&callback=vstCallback101 得到JS代码 里面包含

st值,提取出来

7.GET https://login.taobao.com/member/vst.htm?st=$st&TPL_uesrname=$username 得到最终登陆cookie

参数 :

$postData = array(

'callback' => '1',

'CtrlVersion' => '1,0,0,7',

'fc' => 'default',

'from' => 'tb',

'gvfdcre' =>

'687474703A2F2F6C6F67696E2E74616F62616F2E636F6D2F6D656D6265722F6C6F676F75742E6A68746D6C3F73706D3D61317A30322E312E37

35343839343433372E352E7771716C707926663D746F70266F75743D7472756526726564697265637455524C3D6874747025334125324625324

6692E74616F62616F2E636F6D2532466D795F74616F62616F2E68746D25334673706D253344312E373237343535332E3735343839343433372E

312E4B7A6C66376A25323661645F6964253344253236616D5F6964253344253236636D5F6964253344253236706D5F696425334431353031303

336303030613032633563333733392532366E656B6F742533447837665375386E357A744B777273546A31343039313432373832343035',

'loginsite' => '0',

'loginType' => '3',

'naviVer' => 'ie|8',

'newlogin' => '1',

'osVer' => 'windows|6.1',

'poy' => 'XOR_1_000000000000000000000000000000_655E5B5740137A796574077D6F00656775',

'pstrong' => '2',

'sr' => '1280*1024',

'style' => 'default',

'support' => '000001',

'tid' => 'XOR_1_000000000000000000000000000000_63583054417E7A750D7D040B',

'TPL_password' => $password,

'TPL_redirect_url' => 'http://i.taobao.com/my_taobao.htm?

spm=1.7274553.754894437.1.Kzlf7j&ad_id=&am_id=&cm_id=&pm_id=1501036000a02c5c3739&nekot=x7fSu8n5ztKwrsTj140914278240

5',

'TPL_username' => $username,

'ua' => '',

'TPL_checkcode' => 'CK2X',

);

可是我登录的时候提交的数据里密码那项是空的,也不知道数据是在哪里提交的。我用的是淘宝的账号去登录阿里妈妈网站,你看一下,提交的时候,F12里POST的数据里TPL_password是不是为空的?这个我一直没搞懂

HttpHelper类登录淘宝联盟并下载淘宝客订单xls c#模拟淘宝登录相关推荐

  1. 【转】HttpHelper类登录淘宝联盟并下载淘宝客订单xls

    利用飞哥的HttpHelper 1.3版本(因为我用VS2005开发,1.3报错少)实现模拟登录淘宝联盟并且下载淘宝客订单xls文件.现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复 ...

  2. HttpHelper类登录淘宝联盟并下载淘宝客订单xls

    利用飞哥的HttpHelper 1.3版本(因为我用VS2005开发,1.3报错少)实现模拟登录淘宝联盟并且下载淘宝客订单xls文件.现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复 ...

  3. HTTP-C#模拟登录淘宝联盟并下载淘宝客订单xls

    本程序实现模拟登录淘宝联盟并且下载淘宝客订单xls文件.现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复.我是第一次开发Http程序,请多包涵. 本次开发环境与工具如下: IE9.0 ...

  4. 淘客订单查询策略:淘宝客订单要怎么查?如何实时跟踪用户付款退款等订单状态变化?如何实时结算?

    淘客订单查询策略要怎么安排,可以实时跟踪用户付款.退款等订单状态变化? 如何做到实时跟踪用户订单确认收货并与他结算返利或佣金? 首先要知道目前淘宝客的订单接口的特性,它是按照一个指定的起始时间(sta ...

  5. 淘宝联盟实现第三方用户关联返佣订单的解决方案

    淘宝联盟实现第三方用户关联返佣订单的解决方案 利用淘宝联盟思域用户渠道id与第三方用户做关联实现绑定,当第三方用户用关联的淘宝账号购买自己渠道的淘宝推广商品后,淘宝联盟后台获取的返佣订单就会标识对应的 ...

  6. 淘宝联盟(淘客)/京东联盟(京东客)/拼多多(多多客)常用接口整理

    一.淘宝客常用接口整理 1.商品ID高佣转链API 描述:通过商品ID进行高佣链接,生成带优惠券的二合一最高佣金的链接,如该商品没有优惠券,则除了生成二合一链接外,还会生成该商品的淘客链接,同样为最高 ...

  7. 弘辽科技:淘宝联盟该如何推广

    原标题<弘辽科技:淘宝联盟该如何推广> 现在很多商家都开始采用淘宝联盟的方式来推广店铺的商品,并且淘宝用户也可以通过成为淘宝客来赚取佣金.下面,就为大家讲解淘宝联盟推广的诀窍. 你要明白淘 ...

  8. 淘宝联盟开发系列:阿里妈妈淘宝客申请步骤

    一.阿里妈妈淘宝客API: 阿里妈妈淘宝客/淘客是阿里妈妈与淘宝合作开发的针对淘宝卖家的一种商品和店铺的推广模式,通过推广店铺商品推广人可以按推广商品成交价格收取一定比例的佣金这样的推广人就是淘宝客/ ...

  9. 《淘宝网开店 进货 运营 管理 客服 实战200招》——2.12 让宝贝卖高价的绝招...

    本节书摘来自异步社区<淘宝网开店 进货 运营 管理 客服 实战200招>一书中的第2章,第2.12节,作者:葛存山著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

最新文章

  1. 手把手教你分析MySQL死锁问题,十分钟看完文章下次轻松完成不加班
  2. PHP的转义函数 htmlspecialchars、strip_tags、addslashes解释
  3. python绘制随机数直方图-用matplotlib画直方图(histogram)
  4. C语言-typedef与#define的区别
  5. Redis面试题相关知识整理
  6. TypeError: type str doesn't define __round__ method
  7. 数据库安装mysql57_记录CentOS7.X版本下安装MySQL5.7数据库
  8. 在pom.xml中配置nexus上传地址
  9. 阿里云开源的Blink,计算能力很疯狂:一眨眼,全部都算好!
  10. IntelliJ IDEA for Mac中的Maven操作窗口详解
  11. 100.于电脑右下角的小喇叭不见了的解决
  12. Squid 配置文件详解
  13. android 图片合成pdf文件,怎样将图片转换成pdf文件时将它们合并成一个pdf文件?...
  14. iTEXT常用属性设置
  15. 计算机上的英语键代表什么意思,键盘上的英文键代表什么意思
  16. html5 获取剪切板内容,H5剪切板功能
  17. 电视机顶盒CM311-1A-YST基于openwrt搭建pptpipsec服务器
  18. 比较计算机动画与传统动画的异同,定格动画和传统动画有什么区别?基本一样吧?...
  19. Markdown引用微博图床被防盗链不加载响应403完美解决
  20. Studio 3T重置日期,达到重复试用的效果

热门文章

  1. VS2019+Qt 用vs扩展Microsoft Visual Studio Installer Projects进行程序打包(.msi安装包)
  2. 【轻松学】Python面向对象编程——类的设计、基础语法、继承、多态、类属性和类方法、单例设计
  3. 远程控制电脑目前是很重要、很完美的软件
  4. 前端项目处理用户设备缩放
  5. fgo怎么把new去掉_FGO:一些优雅而又不太浪费的充能技能升级方法送给大家
  6. MySQL复合索引原理解析
  7. python实现淘宝自动回复_python实现人人自动回复、抢沙发功能
  8. 基于SpringBoot医院信息管理系统源码
  9. 如何检测半导体射频器件是否损坏——TFN FMT800矢量网络分析仪
  10. 2015年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——解析版