搜狐邮箱收取

10 篇文章 0 订阅


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

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值