自己查增益速递单号信息

上周日在家在X宝上买了一副双龙板,卖家发的是一个我从未听过的快递(我只知道四大通和S风这种满大街都有的,其他的真心不知道),上海增益速递。

因公司不让上X宝所以而我又希望实时关注我的板板,所以只能记下快递单号,在公司闲暇时间就查一下。到公司第一反应是查度娘,找到快递公司官网,然后输入快递单号、输入验证码查询,无意中发现,原来查询的信息都在URL上(是get方式提交呦,http://www.zeny-express.com/index.php?ydnumber=XXXXXXXXXXXX&code=3&dosearch=&c=chaxun&a=yundan),我就猜想我要是不输入验证码是否可以呢,为了便于记忆我将URL保存了下来http://www.zeny-express.com/index.php?ydnumber=XXXXXXXXXXXX&dosearch=&c=chaxun&a=yundan,试了一下不行,但我随即关闭了浏览器,再打开浏览器直接访问URLhttp://www.zeny-express.com/index.php?ydnumber=XXXXXXXXXXXX&code=3&dosearch=&c=chaxun&a=yundan,居然可以,显示除了信息。

嘿嘿,随即我就写了个程序

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class ZenyExpress {

    public static void main(String[] args) throws Exception {
        zeny();// 增益速递 http://www.zeny-express.com
    }


    public static void zeny() throws Exception {
        String number = "XXXXXXXXXXXX";
        //http://www.zeny-express.com/index.php?ydnumber=XXXXXXXXXXXX&dosearch=&c=chaxun&a=yundan
        URL url = new URL("http://www.zeny-express.com/index.php?ydnumber=" + number + "&dosearch=&c=chaxun&a=yundan");
        // System.out.println("==================以下为网站内容==================");
        URLConnection urlcon = url.openConnection();
        int i = urlcon.getContentLength();

        StringBuffer sb = new StringBuffer();
        if (i > 0) {
            InputStream is = urlcon.getInputStream();

            byte[] buf = new byte[1024];
            while ((is.read(buf)) != -1) {
                sb.append(new String(buf, "Unicode"));
            }
            is.close();
        } else {
            System.out.println("网站响应内容为空...");
        }

        String content = new String(sb.toString().getBytes("Unicode"), "UTF-8");

        int startIndex = content.indexOf("<span><strong>运单号");
        System.out.println(content.substring(startIndex + 14, startIndex + 34));// 运单号:[ XXXXXXXXXXXX ]

        int endIndex = content.indexOf("/table");
        String myContent = content.substring(startIndex + 97, endIndex - 40);
        String[] messages = myContent.split("\n");
        String message = null;
        for (int j = 0; j < messages.length; j++) {
            message = messages[j];
            if (j % 3 == 0) {
                if (message.trim().length() != 0) {
                    System.out.print(message.substring(68, 87));// 时间
                }
            }
            if (j % 3 == 2) {
                System.out.println(message.substring(12, message.length() - 6));// 具体信息
            }
        }

    }
}

程序可以自动打印出时间和快递订单的信息。

 

我的娱乐就到这里了,至于网站安全性我就不多说了,仅供娱乐。

posted @ 2014-08-05 13:54  cRaZy_TyKeIo  阅读(1219)  评论(0编辑  收藏  举报