搜狐邮箱收取
2015-11-11 11:44
148 查看
/**
* 2015-12-22 搜狐新增验证码登录,
* 没有时间解决,请查看该文档的朋友注意一下,
* 此段代码只能做参考作用
*/
最近一直在用lua搞邮件,但是呢,对于lua我是一窍不通,急忙学习了一把(项目只有两个星期),然并卵,无奈,只能先用java跑一把了,以下是搜狐邮箱的下载源码
* 2015-12-22 搜狐新增验证码登录,
* 没有时间解决,请查看该文档的朋友注意一下,
* 此段代码只能做参考作用
*/
最近一直在用lua搞邮件,但是呢,对于lua我是一窍不通,急忙学习了一把(项目只有两个星期),然并卵,无奈,只能先用java跑一把了,以下是搜狐邮箱的下载源码
package com.hackerant.test; import java.io.File; import java.io.FileWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.ClientPNames; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpParams; import org.json.JSONArray; import org.json.JSONObject; import com.hackerant.eml.utils.InputStreamUtils; import com.hackerant.eml.utils.Md5Utils; public class Sohu { public static void main(String[] args) { // TODO Auto-generated method stub String userName = "***@sohu.com"; String passWord = "***";//自己的用户名和密码 login(userName, passWord); } public static void login(String name,String pwd){ String urlPath = "http://passport.sohu.com/apiv2/login"; try { HttpClient postClient = new DefaultHttpClient(); HttpPost post = new HttpPost(urlPath); List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("userid", name)); parameters.add(new BasicNameValuePair("password", Md5Utils.string2MD5(pwd))); parameters.add(new BasicNameValuePair("domain", "sohu.com")); post.setEntity(new UrlEncodedFormEntity(parameters,"utf8")); HttpResponse response = postClient.execute(post); Header[] header = response.getHeaders("Set-Cookie"); String cookies = ""; for (Header header2 : header) { //System.out.println(header2.getValue().split(";")[0]); cookies += header2.getValue().split(";")[0] + ";"; } // System.out.println(cookies); // System.out.println(response.getStatusLine().getStatusCode()); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); String localUrl = ""; HttpClient getClient1 = new DefaultHttpClient(); HttpGet get1 = new HttpGet("http://mail.sohu.com/"); HttpParams params = get1.getParams(); params.setParameter(ClientPNames.HANDLE_REDIRECTS, false); get1.addHeader(new BasicHeader("Cookie",cookies )); HttpResponse getresponse = getClient1.execute(get1); int code2 = getresponse.getStatusLine().getStatusCode(); // System.out.println(code2); Header[] hd = getresponse.getAllHeaders(); for (Header header2 : hd) { if (header2.getName().equals("Set-Cookie")) { cookies += header2.getValue().split(";")[0] + ";"; } if (header2.getName().equals("Location")) { localUrl = header2.getValue(); } } System.out.println("+++++++++++++++++++++++++++++++++++++++++"); if (!"".equals(localUrl)) { HttpClient getClient2 = new DefaultHttpClient(); HttpGet get2 = new HttpGet(localUrl); HttpParams params2 = get2.getParams(); params2.setParameter(ClientPNames.HANDLE_REDIRECTS, false); get2.addHeader(new BasicHeader("Cookie",cookies )); HttpResponse getresponse2 = getClient2.execute(get2); int code3 = getresponse2.getStatusLine().getStatusCode(); // System.out.println(code3); hd = getresponse2.getAllHeaders(); for (Header header2 : hd) { // System.out.println(header2); if (header2.getName().equals("Set-Cookie")) { cookies += header2.getValue().split(";")[0] + ";"; } } // System.out.println(cookies); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); String []temp = cookies.split(";"); String tempCookies = ""; int tempInt = -1; for (int i = 0; i < temp.length; i++) { if (!temp[i].contains("ppmdig")) { tempCookies += temp[i] + ";"; }else { tempInt = i; } } // if (tempInt != -1) { // tempCookies += temp[tempInt]; // } System.out.println("+++++++++++++++++++++++++++++++++++++++++"); // System.out.println(tempCookies); HttpClient getClient3_1 = new DefaultHttpClient(); HttpGet get3_1 = new HttpGet("http://mail.sohu.com/servlet/LoginServlet?appid=1113"); HttpParams params2_1 = get3_1.getParams(); params2_1.setParameter(ClientPNames.HANDLE_REDIRECTS, false); get3_1.addHeader(new BasicHeader("Cookie",tempCookies )); HttpResponse getresponse3_1 = getClient3_1.execute(get3_1); int code_1 = getresponse3_1.getStatusLine().getStatusCode(); // System.out.println(code_1); String localString = ""; hd = getresponse3_1.getHeaders("Location"); for (Header header2 : hd) { localString = header2.toString(); localString = localString.substring(localString.indexOf(":") + 2, localString.length()) ; } localString = localString.substring(0,localString.lastIndexOf("/")); // System.out.println(localString); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); HttpClient getClient3 = new DefaultHttpClient(); HttpGet get3 = new HttpGet(localString + "/folder"); get3.addHeader(new BasicHeader("Cookie",tempCookies )); HttpResponse getresponse3 = getClient3.execute(get3); int code4 = getresponse3.getStatusLine().getStatusCode(); // System.out.println(code4); String tempJson = InputStreamUtils.getString(getresponse3.getEntity().getContent()); // // System.out.println(tempJson); JSONObject jsonObj = new JSONObject(tempJson); // System.out.println(jsonObj.get("folders")); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); JSONArray jsonArray = new JSONArray(jsonObj.get("folders").toString()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); //获得文件夹id和总数 int total = obj.getInt("total"); int folderId = obj.getInt("folder_id"); String receiver = "收件箱"; if (folderId > 0) { HttpClient getClient4 = new DefaultHttpClient(); HttpGet get4 = new HttpGet(localString + "/folder/"+folderId+"?start=0" + "&length="+total+"&sort=date&order=0"); get4.addHeader(new BasicHeader("Cookie",tempCookies )); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); HttpResponse getresponse4 = getClient4.execute(get4); int code5 = getresponse4.getStatusLine().getStatusCode(); // System.out.println(code5); String tempJsonArr = InputStreamUtils.getString(getresponse4.getEntity().getContent()); JSONArray jsonArr2 = new JSONArray(tempJsonArr); for (int j = 0; j < jsonArr2.length(); j++) { switch (folderId) { case 1: receiver = "收件箱"; break; case 2: receiver = "草稿箱"; break; case 3: receiver = "发送箱"; break; case 4: receiver = "删除箱"; break; case 5: receiver = "垃圾箱"; break; default: break; } JSONObject tempJsonObj = jsonArr2.getJSONObject(j); int rowId = tempJsonObj.getInt("rowid"); HttpClient getClient5 = new DefaultHttpClient(); HttpGet get5 = new HttpGet(localString + "/mail/" + rowId); get5.addHeader(new BasicHeader("Cookie",tempCookies )); HttpResponse getresponse5 = getClient5.execute(get5); int code6 = getresponse5.getStatusLine().getStatusCode(); // System.out.println(code6); String tempJsonArr2 = InputStreamUtils.getString(getresponse5.getEntity().getContent()); JSONObject jsObject = new JSONObject(tempJsonArr2); String mid = jsObject.getString("mid") + ".1"; HttpClient getClient6 = new DefaultHttpClient(); HttpGet get6 = new HttpGet(localString + "/download/" + mid); get6.addHeader(new BasicHeader("Cookie",tempCookies )); HttpResponse getresponse6 = getClient6.execute(get6); int code7 = getresponse6.getStatusLine().getStatusCode(); // System.out.println(code7); String tempJsonArr3 = InputStreamUtils.getString(getresponse6.getEntity().getContent()); // System.out.println(tempJsonArr3); File file = new File("D:/img/", new Date().getTime() + ".eml"); FileWriter fw = new FileWriter(file); fw.write(tempJsonArr3); fw.close(); System.out.println("当前为: " + receiver + " 其总数为: " + total + " 当前已收取第 " + (j+1) + "封" ); System.out.println("+++++++++++++++++++++++++++++++++++++++++"); } } } System.out.println("====================收取完成==========================="); } } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- static深入详细解释
- spring mvc静态资源文件的引用
- mysql5.6主从表数据同步
- left join 和 inner join 区别
- 捍卫者usb管理系统
- Unable to read TLD "META-INF/c.tld" 的处理方法
- Android Volley完全解析(一),初识Volley的基本用法
- ubuntu下制作u盘启动盘
- Android App相关的读写路径
- Java资源大全
- Eclipse 报 "The builder launch configuration could not be found" 错误的解决办法
- 关于javascript里面仿python切片操作数组的使用方法
- Moodle中限制用户修改自己姓名 昵称等(可以改密码)
- ARM Linux系统修改动态IP为静态IP地址
- YZR.Data webconfig端的配置
- 求局部极值的小技巧
- 理解OAuth 2.0
- iOS keyChain 研究
- 让编程更轻松的 7 个 Visual Studio 扩展 : 以下几个扩展,BuildVision可以用
- objective-c基础教程——学习小结