查询快递单的投递情况
我做了一个系统,需要查询快递单的投递情况,
以下是顺丰查询的地址
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个快递单的。 --------------------编程问答--------------------
这个是个大问题 如果这个问题能解决 WebBrowers控件楼主可以去看下 --------------------编程问答-------------------- 验证码如果是数字还好办,可以识别,但是这字母实在是费劲
--------------------编程问答-------------------- --------------------编程问答-------------------- http://kf.sf-express.com/css/myquery/track.action
顺丰的 是 字面。 --------------------编程问答-------------------- 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
不知道这么行得通否??
另外如果我想查询那快递结果该如何办?? --------------------编程问答--------------------
这个咋实现的,能发下代码吗, --------------------编程问答-------------------- 我用了以下的办法了,先把顺丰查询的页面 装载到 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#