会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 建站经验 > Java实现网易163邮箱老友通讯录的解析功能(带源码)

Java实现网易163邮箱老友通讯录的解析功能(带源码)

时间:2012-05-24 18:29:25   作者:   来源:   点击:

这个源码我之前开源过,昨晚又做了一下。公开源码。这里讲下思路以及真实源码实现。我们将使用1个类HttpClient,这个类的根基用法可以参照:

.ibm/developerworks/cn/opensource/os-httpclient/

我们会使用httpClient以及Httpwatch东西。

正式起头:

首先,我们用我们的账户密码登录,这里是thieftest 密码a123456 为了他人便利,请不要修改密码

为了更快的找到对应的请求地址,我们直接搜索我们的用户名

我们获得了 https://ssl.mail.163/entry/coremail/fcg/ntesdoor2?df=webmail163&from=web&funcid=loginone&iframe=1&language=-1&net=t&passtype=1&product=mail163&race=234_62_188_db&style=-1&uid=thieftest@163

这么一串字符串 ,我们可以看到它是一个POST请求,所以我们需要用httpclient的POST请求来请求办事器。

下面是POST和GET请求的核心代码,

public static String doGet(<span class="wp_keywordlink_affiliate"><a href=".ij2ee/tag/httpclient" target="_blank">HttpClient</a></span> client, String url, String charCode)throws URISyntaxException, IllegalStateException, IOException,HttpException, InterruptedException {HttpGet get = new HttpGet(url);return StringUtil.readInputStream(client.execute(get).getEntity().getContent(), charCode);}public static String doPost(<span class="wp_keywordlink_affiliate"><a href=".ij2ee/tag/httpclient" target="_blank">HttpClient</a></span> client, String url,Map<String, String> param, String charCode)throws URISyntaxException, IllegalStateException, IOException,HttpException, InterruptedException {NameValuePair nvps[] = new BasicNameValuePair[param.size()];int i = 0;for (Map.Entry<String, String> entry : param.entrySet()) {NameValuePair nvp = new BasicNameValuePair(entry.getKey(), entry.getValue());nvps[i++] = nvp;}HttpPost httpPost = new HttpPost(url);httpPost.setEntity(new UrlEncodedFormEntity(nvps, charCode));HttpResponse response = client.execute(httpPost);if(response.getStatusLine().getStatusCode()!=200){throw new RuntimeException("网页抓取失败,HTTP CODE:"+response.getStatusLine().getStatusCode());}InputStream is = response.getEntity().getContent();return StringUtil.readInputStream(is, charCode);}

按照返回的信息我们阐发成功与否,判断的体例就是看有没取得一个叫sid的参数

返回成功的话 会在消息里有 index?sid=xxxxxxxxx 这一段。 这里的xxxxxxx是至关重要的,我们需要获得他。 这里我们可使用正则表达式。来获得 年夜概代码如下:

private static String regex = "iframe src="index.jsp\?sid=([^"]+)";public static String getByRegex(String regex, int index, String txt) {Pattern p = Patternpile(regex,Pattern.DOTALL);Matcher m = p.matcher(txt);if (m.find()) {return m (index);}return null;}

点通讯后 我们抓包发现了一个URL 貌似记实都在里面。

是JSON的撒。要是数据多了 我们可以在www json 上查看目录布局

可是我们请求这个URL后 发现它就返回了

<?xml version="1.0" encoding="UTF-8" ?><result><code>S_OK</code></result>

看来这条路欠亨啊。继续找把。突然发现还有打印的操作能取得所有的我们想要的资料。

String getUsers="http://tg4a84.mail.163/jy3/address/addrprint.jsp?sid=前面获得的ID";

请求后取得如下内容

<div class="ContentWp add_print2"><div class="ContentThemeWp"><table width="100%" height="35px" border="0" cellpadding="0" cellspacing="0" bgcolor="f0f9fc"><tr><td width="88%"><b>&nbsp;&nbsp;&nbsp;&nbsp;<span style=" font-size:16px">选择打印的项目</span></b>&nbsp;<input type="checkbox" name="phone" value="phone" onclick="fAddressPrintShow(this)">德律风/即时通讯ID<input type="checkbox" name="home" value="home" onclick="fAddressPrintShow(this)">家庭资料<input type="checkbox" name="company" value="company" onclick="fAddressPrintShow(this)">单位/公司<input type="checkbox" name="other" value="other" onclick="fAddressPrintShow(this)">其他信息</span></td><td width="12%"><div align="center"><span style="background-color:#f0f9fc; height:35px; padding-top:8px"><input name="button" type="button" class="Btn BtnNml ImpBtn" onMou搜索引擎优化ver="this.className='Btn BtnHv ImpBtn'" onMou搜索引擎优化ut="this.className='Btn BtnNml ImpBtn'" onMouseDown="this.className='Btn BtnHv BtnDw ImpBtn'" hidefocus="ture" value="打 印" style=" margin-bottom:8px" onclick="window.print();"/></span></div></td></tr></table><div class="Hr"><hr/></div><div class="gTitleSub"><div align="left"><b class="mTT">三少</b></div><div class="Extra"></div></div><table class="gTable"><tr id="tr_base_0" style=""><th>邮件地址:</th><td>ij2ee@139</td></tr><tr id="tr_base_0" style=""><th>移动德律风:</th><td></td></tr><tr id="tr_base_0" style=""><th>生日:</th><td></td></tr><tr id="tr_home_2" style="display:none"><th>联系地址:</th><td>China 中国</td></tr><tr id="tr_company_3" style="display:none"><th>公司地址:</th><td>;;;;;;CI</td></tr><tr id="tr_other_4" style="display:none"><th>备注:</th><td>Java手艺博客 ij2ee</td></tr></table><div class="Hr"><hr /></div><div class="gTitle"><div align="center"><span style="color:#999;">网易公司版权所有</span></div></div></div></div>
分享到:

网友评论

热门建站经验