`
苍山洱海
  • 浏览: 5032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

没事写的获取校内好友头像

阅读更多
package on201104;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;


public class GetFlist {
	
	static final String LOGON_SITE = "http://www.renren.com";

	static final int LOGON_PORT = 80;
	
	static final String DEPT_PATH = "d:\\temp\\abc";

	public static Map<String,String> GetFriendMap(Cookie[] cookies) {
		Map<String,String> map = new HashMap<String,String>();
		String url = "http://friend.renren.com/myfriendlistx.do";
		String responseString = "";
		HttpClient client = new HttpClient();
		client.getHostConfiguration().setHost(LOGON_SITE,LOGON_PORT);
		GetMethod get = new GetMethod(url);
		client.getState().addCookies(cookies);
		// 分析HTML
		try {
			client.executeMethod(get);
			responseString = get.getResponseBodyAsString();
			if (responseString.lastIndexOf("var friends=") > -1
					&& responseString.lastIndexOf("var hotfriends=[]") > -1) {
				int stat = responseString.lastIndexOf("var friends=[") + 13;
				int end = responseString.lastIndexOf("var hotfriends=[]") - 4;
				responseString = responseString.substring(stat, end);
				String ulist[] = responseString.split("\\},\\{");

				// list
				for (int i = 0; i < ulist.length; i++) {
					//获取一个人的所有属性
					Map<String,String> allProps = JsonUtil.json2Map(ulist[i]);
					map.put(allProps.get("id"), allProps.get("head").replaceAll("\\\\/", "/"));
				}
			} else {
				System.out.println("好友列表获取失败");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		get.releaseConnection();
		return map;
	}
	
	public static void main(String[] args) {
		String name = "xxx";
		String passwd = "xxx";
		getAllFriends(name, passwd);
	}

	/**
	 * 获取所有好友
	 * @param name
	 * @param passwd
	 */
	@SuppressWarnings("unchecked")
	private static void getAllFriends(String name, String passwd) {
		//获取所有朋友,和他们的头像。
		Map<String,String> map = GetFriendMap(new RrLogin().login(name, passwd));
		int i = 1;
		int size = map.keySet().size();
		for(Object obj : map.entrySet()) {
			System.out.println(size + "-->" + i + ":");
			Entry<String,String> one = (Entry<String,String>)obj;
			String id = one.getKey();
			String value = one.getValue();
			saveOnePic(DEPT_PATH,id,value);
			i++;
		}
	}

	/**
	 * 保存一张图片
	 * @param deptPath
	 * @param id
	 * @param value
	 */
	private static void saveOnePic(String deptPath, String id, String value) {
		System.out.println(id + ":" + value);
		if (value !=null ) {
			try {
				URL url = new URL(value);
				HttpURLConnection conn = (HttpURLConnection) url.openConnection();
				File file = new File(deptPath + "\\" + id + ".jpg");
	            // 生成图片  
				InputStream in = conn.getInputStream();
	            BufferedOutputStream out = new BufferedOutputStream(  
	                    new FileOutputStream(file));  
	            byte[] buf = new byte[2048];  
	            int length = in.read(buf);  
	            while (length != -1) {  
	                out.write(buf, 0, length);  
	                length = in.read(buf);  
	            }  
	            in.close();  
	            out.close();  
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}



package on201104;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

public class JsonUtil {

	static String SEP_FU = ",";
	
	static String SEP_FU2 = ":";

	public static String[] json2Array(String jsonStr) {
		if (StringUtils.isNotBlank(jsonStr)) {
			jsonStr = jsonStr.replaceAll("\"", "").replaceAll("\\{", "").replaceAll("\\}", "");
			if (jsonStr.contains(".,Ltd")) {
				jsonStr = jsonStr.replace(".,Ltd", ".Ltd");
			}
			String[] props = jsonStr.split(SEP_FU);
			return props;
		}
		return null;
	}
	
	public static Map<String,String> array2Map(String[] array) {
		Map<String,String> map = new HashMap<String,String>();
		String ssss = "WQWWQWQW";
		if (array != null) {
			for (String str : array) {
				str = str.replaceFirst(SEP_FU2, ssss);
				map.put(str.split(ssss)[0], str.split(ssss)[1]);
			}
		}
		return map;
	}
	
	public static Map<String,String> json2Map(String jsonStr) {
		return array2Map(json2Array(jsonStr));
	}
}



package on201104;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class RrLogin {

	static final String LOGON_SITE = "http://www.renren.com";

	static final int LOGON_PORT = 80;

	public Cookie[] login(String name, String pas) {
		HttpClient client = new HttpClient();
		client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
		PostMethod post = new PostMethod("http://passport.renren.com/PLogin.do");
		NameValuePair username = new NameValuePair("email", name);
		NameValuePair password = new NameValuePair("password", pas);
		NameValuePair origURL = new NameValuePair("origURL",
				"http://home.renren.com/Home.do");
		NameValuePair domain = new NameValuePair("domain", "renren.com");
		NameValuePair formName = new NameValuePair("formName", "");
		NameValuePair method = new NameValuePair("method", "");
		post.setRequestBody(new NameValuePair[] { username, password, origURL,
				domain, formName, method });
		try {
			client.executeMethod(post);
		} catch (HttpException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String responseString = null;
		try {
			responseString = new String(post.getResponseBodyAsString()
					.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Cookie[] cookies = client.getState().getCookies();
		client.getState().addCookies(cookies);
		post.releaseConnection();

		// 截取转跳地址
		if (responseString.lastIndexOf("The URL has moved") > -1) {
			responseString.substring(26, responseString.length() - 10);
			String newUrl = responseString.substring(27, responseString
					.length() - 11);

			// 实施转跳
			GetMethod get = new GetMethod(newUrl);
			get.setRequestHeader("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;)");
			get.setRequestHeader("Cookie", cookies.toString());
			try {
				client.executeMethod(get);
			} catch (HttpException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			get.releaseConnection();
			return client.getState().getCookies();
		}
		return null;
	}
}

分享到:
评论

相关推荐

    校内网好友留言小工具

    校内网好友留言小工具校内网好友留言小工具校内网好友留言小工具校内网好友留言小工具

    批量添加校内网好友 农友

    标题中的“批量添加校内网好友 农友”指的是在早期的社交网络平台——校内网上,用户希望快速增加好友,尤其是与自己有相同学校背景的“农友”(这里可能是特指中国农业大学的同学,因为“农友”一词通常与农业相关...

    C#写的校内网自动发帖机

    本文将深入探讨“C#写的校内网自动发帖机”这一项目,涉及C#语言特性、自动发帖机的工作原理以及与校内网(可能是早期的社交网络平台)的接口交互。 首先,我们要理解C#语言的基础。C#由微软公司开发,是.NET框架的...

    好友选择(仿校内,开心)

    在开发社交应用时,"好友选择(仿校内,开心)"是一个常见的功能,它允许用户从一个用户列表中选择朋友,类似于校内网(人人网)或开心网的社交体验。这个功能主要通过JavaScript实现,可以支持单选和多选两种模式,...

    Perl写的校内网刷人气代码

    在这个场景中,"Perl写的校内网刷人气代码"是一个利用Perl编写的程序,它的目标是自动化地访问校内网上的用户页面,以增加特定用户的访问量,从而达到刷人气的目的。这个过程通常称为网页爬虫或网络抓取。 首先,...

    校内自动访问好友软件C#

    标题中的“校内自动访问好友软件C#”指的是一个用C#编程语言开发的应用程序,其主要功能是在校园网络环境中自动访问用户的好友列表。这个软件是基于.NET平台构建的,意味着它利用了Microsoft的.NET Framework,特别...

    校内通 3[1].356

    首先,实时好友新鲜事提醒是校内通的核心功能之一。它能够即时推送好友在平台上的动态更新,比如状态更改、分享的照片或文章等,让使用者时刻掌握朋友的最新动向,加强了校园内的社交连接。这种实时提醒机制不仅提高...

    自己写的校内网博客发布机器人java代码

    自己写的校内网博客发布机器人java代码 自动在校内网博客发布文章 这是一个很简单的用于说明性质的代码,没有界面,你可以对它进行改进,例如从数据库读取文章内容等,以实现更强大的功能。

    自己写的校内网博客发布机器人C#代码

    自己写的校内网博客发布机器人C#代码 自动在校内网博客发布文章 这是一个很简单的用于说明性质的代码,没有界面,你可以对它进行改进,例如从数据库读取文章内容等,以实现更强大的功能。

    校内通,即时聊天工具

    校内通是校内网用户专属的聊天软件。 用校内通上校内网,实时接收好友上传照片、发表日志的新鲜事,让你第一时间就知道你在校内网的好友的最新动态。

    校内网机器人用于校内网

    【标题】:“校内网机器人”是指一种专用于校内社交网络平台的自动化工具,它能够模拟用户行为,执行各种任务,比如自动回复消息、管理好友、发布动态等。这样的机器人通常是由编程爱好者或者开发者创建的,以提高...

    java开发项目 (校内网项目)

    ### Java开发项目(校内网项目)知识点梳理 #### 一、项目背景与目标 - **项目背景**:随着互联网技术的发展以及高校信息化建设的深入,校内网作为连接师生的重要平台,在校园生活中扮演着越来越重要的角色。本...

    韩顺平校内网资料

    【标题】"韩顺平校内网资料"指的是由知名IT教育专家韩顺平教授提供的、与校内网络系统相关的教学资源。韩顺平教授在IT教育领域有着丰富的经验,他的课程涵盖了计算机科学的多个方向,包括网络技术、编程语言等。这个...

    人人网(校内)自动登录

    最近想找个新校内(人人网)的登录程序,网上找啊找啊发现都是老校内的,不能直接用,于是乎自己写了个简易的。用到了几个Libarary已经放在压缩包里了,请自行添加。 说了是简易版,就是没有功能~抛砖引玉吧。 ...

    校内智能浏览器 V1.0

    可以自动浏览最近上过线的校内用户,在闲暇之余观赏帅哥美女;在浏览用户之外,如果该用户回访,自己的人气得到增加;带设置功能,如果校内连接改变,设置高级选项即可解决;自动保存当天的访问记录,不会重复访问...

    我的校内网.pdf

    ### 我的校内网.pdf 知识点详解 #### 1. 校内网概述与功能设计 **校内网**是一种专为特定学校或教育机构内的成员提供社交服务的平台,允许用户进行交流、分享照片、撰写日记等功能。在《我的校内网》一文中,介绍...

    校内相册批量下载(Xiaonei Donbat 2.1)

    2、最近有需要下头像相册的同学,所以改进大图查找方案 3、增加了一个下载方式的气泡提示 4、将软件自带下载的路径加上相册名 5、改进软件重复运行策略 6、改进图片数量过多的查找方案 7、想起有的相册有文件名不...

    校内新闻论坛的分析与设计源码

    校内新闻论坛的分析与设计是利用Java语言来进行程序的编写,用MySQL来存储相关的新闻、论坛和学生的...设计的完成可以为学生提供一个新闻获取的重要途径,为学生提供一个相互交流学习的平台,丰富了学生的课余生活。

    校内网源代码

    【标题】"校内网源代码"所涉及的知识点主要围绕着社交网络平台的开发、后端编程语言、前端技术、数据库设计以及服务器架构。"校内网"是中国早期的一个校园社交网络平台,其源代码的分析对于学习和理解大型社交网络的...

Global site tag (gtag.js) - Google Analytics