当前位置:编程学习 > C#/ASP.NET >>

查询快递单的投递情况


我做了一个系统,需要查询快递单的投递情况,
以下是顺丰查询的地址
http://kf.sf-express.com/css/myquery/track.action

我能够通过程序把我需要查询的单号,赋值给 http://kf.sf-express.com/css/myquery/track.action 页面里面的单号输入框吗?

我该是用什么办法比较好


麻烦告知!!
谢谢!!! --------------------编程问答-------------------- 跟踪抓一下数据发送的句柄

直接传值 --------------------编程问答-------------------- 你的意思是,用抓包工具,看他传递了什么参数过去?

请问用什么抓包工具? --------------------编程问答-------------------- 100分,100分……友情帮顶。 --------------------编程问答-------------------- 我抓了数据了 
 POST /css/myquery/authorize.action HTTP/1.1\r\n
        [Expert Info (Chat/Sequence): POST /css/myquery/authorize.action HTTP/1.1\r\n]
        Request Method: POST
        Request URI: /css/myquery/authorize.action
        Request Version: HTTP/1.1
    Accept: text/javascript, text/html, application/xml, text/xml, */*\r\n
    Accept-Language: zh-cn\r\n
    x-prototype-version: 1.6.0.2\r\n
    Referer: http://kf.sf-express.com/css/myquery/track.action\r\n
    x-requested-with: XMLHttpRequest\r\n
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n
    Accept-Encoding: gzip, deflate\r\n
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\r\n
    Host: kf.sf-express.com\r\n
    Content-Length: 15\r\n
    Connection: Keep-Alive\r\n
    Cache-Control: no-cache\r\n
    [truncated] Cookie: locale=zh_CN; JSESSIONID=6607310A43B3A719CC1F13FBC94DADED.css3; __utma=265537869.511429880.1274256750.1274321035.1274333294.3; __utmz=265537869.1274333294.3.3.utmccn=(organic)|utmcsr=baidu|utmctr=%CB%B3%B7%E1%BF%EC%B5%D
    \r\n
Line-based text data: application/x-www-form-urlencoded


我该如何分析这些数据,万望多指点~ --------------------编程问答-------------------- WatiN-2.0.10.928-net-2.0
LZ搜索下这个 --------------------编程问答-------------------- 学习一下 --------------------编程问答-------------------- 5楼的朋友
我用了WIRESHARK 这个工具了 
抓到包了 但是不不会看包

是不是这个比较有用???

  [truncated] Cookie: locale=zh_CN; JSESSIONID=6607310A43B3A719CC1F13FBC94DADED.css3; __utma=265537869.511429880.1274256750.1274321035.1274333294.3; __utmz=265537869.1274333294.3.3.utmccn=(organic)|utmcsr=baidu|utmctr=%CB%B3%B7%E1%BF%EC%B5%D


很奇怪,我找不到我提交的 快递单号的?  --------------------编程问答-------------------- 学习,感觉挺有用

.Net技术群108412141
共同学习.Net技术,分享.Net学习资料,分享.Net工作机会 --------------------编程问答-------------------- 楼主的问题不是难点 难点是那个验证码 先考虑这个问题吧 --------------------编程问答-------------------- 验证码也是一个问题。

现在能否把A(我建的)站的快递单号,赋到 顺丰查询页面的单号输入框,手工填写那个验证码也行。因为顺丰的允许一次查询20个快递单的。 --------------------编程问答--------------------
引用 10 楼 kciv 的回复:
验证码也是一个问题。

现在能否把A(我建的)站的快递单号,赋到 顺丰查询页面的单号输入框,手工填写那个验证码也行。因为顺丰的允许一次查询20个快递单的。

这个是个大问题 如果这个问题能解决 WebBrowers控件楼主可以去看下 --------------------编程问答-------------------- 验证码如果是数字还好办,可以识别,但是这字母实在是费劲
--------------------编程问答-------------------- --------------------编程问答-------------------- http://kf.sf-express.com/css/myquery/track.action

顺丰的 是 字面。 --------------------编程问答-------------------- http://kf.sf-express.com/css/myquery/track.action

顺丰的 是 字母。 --------------------编程问答--------------------
引用 15 楼 kciv 的回复:
http://kf.sf-express.com/css/myquery/track.action

顺丰的 是 字母。

第2个图就是取的顺丰的验证码,出现?应该是编码问题或者特征码不对,明天再看 --------------------编程问答-------------------- 一个一个地抓包,然后把你的验证码一个一个截取放进去 --------------------编程问答-------------------- 一个一个地抓包,然后把你的验证码一个一个截取放进去 --------------------编程问答-------------------- 点右键,查看源代码.然后把action 的地址改成 http://kf.sf-express.com/css/myquery/ +原来的action地址.

验证码同理. --------------------编程问答-------------------- 我抓包了,发现以下数据。

 Cookie: locale=zh_CN; loginsource=2; region=CN; USER_LOGIN_TYPE=customer; JSESSIONID=FA893F45F43789D0F16C4AD1499C12DB.css1\r\n
    \r\n
Line-based text data: application/x-www-form-urlencoded
    waybills=571384325636%0D%0A571358330279&verifycode=WZSF


waybills 是我要查询的单号  veriycode 是验证码


*****************************************************************************
Hypertext Transfer Protocol
    POST /css/myquery/queryBill.action HTTP/1.1\r\n
        [Expert Info (Chat/Sequence): POST /css/myquery/queryBill.action HTTP/1.1\r\n]
        Request Method: POST
        Request URI: /css/myquery/queryBill.action
        Request Version: HTTP/1.1
    Accept: */*\r\n
    Referer: http://kf.sf-express.com/css/myquery/track.action\r\n
    Accept-Language: zh-cn\r\n
    Content-Type: application/x-www-form-urlencoded\r\n
    Accept-Encoding: gzip, deflate\r\n
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\r\n
    Host: kf.sf-express.com\r\n
    Content-Length: 55\r\n
    Connection: Keep-Alive\r\n
    Cache-Control: no-cache\r\n
    Cookie: locale=zh_CN; loginsource=2; region=CN; USER_LOGIN_TYPE=customer; JSESSIONID=FA893F45F43789D0F16C4AD1499C12DB.css1\r\n
    \r\n
Line-based text data: application/x-www-form-urlencoded
    waybills=571384325636%0D%0A571358330279&verifycode=WZSF --------------------编程问答-------------------- 结上一楼,也就说我 post waybills=571384325636%0D%0A571358330279&verifycode=WZSF 这数据过去 /css/myquery/queryBill.action 同时 伪造 cookies Cookie: locale=zh_CN; loginsource=2; region=CN; USER_LOGIN_TYPE=customer; JSESSIONID=FA893F45F43789D0F16C4AD1499C12DB.css1\r\n

不知道这么行得通否??

另外如果我想查询那快递结果该如何办?? --------------------编程问答--------------------
引用 12 楼 deknight 的回复:
验证码如果是数字还好办,可以识别,但是这字母实在是费劲


这个咋实现的,能发下代码吗, --------------------编程问答-------------------- 我用了以下的办法了,先把顺丰查询的页面 装载到 webbrowser 控件里面,然后通过读取,该页面的cookies,然后把需要的查询的 单号,和验证码post 到顺丰查结果的页面,代码如下,但是不知道哪里出错,按了按钮后没有反应的。

  private void button3_Click(object sender, EventArgs e)
        {
            CookieContainer myCookieContainer = new CookieContainer();
            //String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
            string cookieStr = webBrowser1.Document.Cookie;
            string[] cookstr = cookieStr.Split(';');
            foreach (string str in cookstr)
            {
              string[] cookieNameValue = str.Split('=');
               Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
               ck.Domain = "http://kf.sf-express.com";//必须写对
                myCookieContainer.Add(ck);
            }

            HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://kf.sf-express.com/css/myquery/queryBill.action");
            hreq.Method = "POST";
            hreq.ContentType = "application/x-www-form-urlencoded";
        
            //自己创建的CookieContainer
            hreq.CookieContainer = myCookieContainer;

            string postdata = "waybills=571358329780%0D%0A571358329814%0D%0A571358330297&verifycode=GGGZ";
            byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
            hreq.ContentLength = byte1.Length;
         
            Stream poststream = hreq.GetRequestStream();
            poststream.Write(byte1, 0, byte1.Length);
            poststream.Close();
      
           HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();





        }
--------------------编程问答-------------------- 接着上面的:
我获取点击button3 时候 的数据包,是对的。
但问题是,为什么在 WebBrower 装载的顺丰页面,在该页面输入了验证码和快递单号,老是提示验证码错误? 如果直接在ie 打开顺丰页面就不出现这个问题。请问为什么?? --------------------编程问答-------------------- 接上面,我查到原因了,

在webbrowser 的查询页面 http://kf.sf-express.com/css/myquery/track.action ,我点了查询,就会在ie打开   http://kf.sf-express.com/css/myquery/queryBill.action ,webbrowser与新开ie窗口的session没共享!

我得查查在webbrowser 点查询后, 打开的新页面要在原来的 webbrowser ,估计这样的session 就一样。
--------------------编程问答-------------------- 关注一下 --------------------编程问答--------------------   谁有实现的完整代码么?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,