您的位置:首页 > 其它

搜狐邮箱收取

2015-11-11 11:44 148 查看
/**

* 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();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: