`
learnmore
  • 浏览: 601788 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

模拟自动登录并发表日志

    博客分类:
  • java
 
阅读更多
公司要求每天都需要写工作日志,并且在一个社区里面发表,由于公司不能 上网因此自己写了一个模拟小程序放在手机上,实现自动登录并发表日志在这里做一个备份,以防以后会用到类似功能
package com.socket;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class MyHttpClient {
	// TODO Auto-generated method stub
	private static HttpClient client = new HttpClient();
	/**
	 * @param args
	 * @throws IOException
	 * @throws HttpException
	 */
	public static void main(String[] args) throws HttpException, IOException {
        if(login())
        {
        	System.out.println("登录成功");
        	if(shareLog("日志发布成功拉!"))
        	{
        		System.out.println("分享成功");
        		
        	}
        }
	}

	/**
	 * * 使用POST方式提交数据 * @return   
	 */
	private static HttpMethod getLoginPostMethod() {
		PostMethod post = new PostMethod("https://www.belink.com/j_spring_security_check");
		NameValuePair password = new NameValuePair("j_password", "密码");
		NameValuePair name = new NameValuePair("j_username","用户名");
		NameValuePair remember = new NameValuePair("spring_security_remember_me", "on");
		post.setRequestBody(new NameValuePair[] { name, password,remember});
		return post;
	}
	/**
	 * 登录
	 */
	private static boolean login() throws HttpException, IOException
	{
		HttpMethod method = getLoginPostMethod();
		client.executeMethod(method);
		// 打印服务器返回的状态
		System.out.println(method.getStatusLine());
		//页面重定向
		int statuscode=method.getStatusCode();
		if(statuscode==HttpStatus.SC_MOVED_TEMPORARILY)
		{
			Header header=method.getResponseHeader("location");
			if(header!=null)
			{
				String redirectUrl=header.getValue();
				if(redirectUrl!=null&&!"".equals(redirectUrl))
				{
					GetMethod redirect=new GetMethod("https://www.belink.com/portal/main");
					redirect.setRequestHeader("Accept", "	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
					redirect.setRequestHeader("Accept-Encoding", "gzip, deflate");
					redirect.setRequestHeader("Host", "www.belink.com");
					redirect.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
					redirect.setRequestHeader("Connection", "keep-alive");
					redirect.setRequestHeader("Referer", "https://www.belink.com/home_login.jsp");
					redirect.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0");
					redirect.setRequestHeader("Cookie", "Hm_lvt_449f6364887899ece45a9a548972604a=1353419946,1353496848,1353593152,1353999974; Hm_lpvt_449f6364887899ece45a9a548972604a=1354007630; login_userid=chelei%40belink.com; JSESSIONID=4BF7C7FA4D6CB53801B999CEE950D9F5; SPRING_SECURITY_REMEMBER_ME_COOKIE=Sk1OMVp1blkzVjJGNlBucDgyWlgrdz09OkhZZE5kMFhxYkg3b29jd3RsNW8xZXc9PQ");
					client.executeMethod(redirect);
					System.out.println(redirect.getResponseBodyAsString());
					System.out.println("Redirect:"+redirect.getStatusLine().toString());
					redirect.releaseConnection();
					if(redirect.getStatusCode()==HttpStatus.SC_OK)
					{
						// 释放连接
						method.releaseConnection();
						return true;
					}
				}
			}
		}
		return false;
	}
	/**
	 * 分享日志
	 * @return
	 * @throws IOException 
	 * @throws IOException 
	 * @throws HttpException 
	 */
	private static boolean shareLog(String logContent) throws IOException
	{
		PostMethod post = new PostMethod("https://www.belink.com/service/event/publish.json");
		//日志发布时间
		SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
		NameValuePair content = new NameValuePair("content", "{\"endTime\":\""+format.format(new Date())+"\",\"title\":\"我的日志\",\"logContent\":\""+logContent+"\"}");
		NameValuePair members=new NameValuePair("members","e40b44bbae171ffa5dfd1299d4c791f3");
		NameValuePair message = new NameValuePair("message","	我发起了一个$日志");
		NameValuePair open = new NameValuePair("open", "false");
		NameValuePair type = new NameValuePair("type", "log");
		
		post.setRequestBody(new NameValuePair[] { content,members,message,open,type});
		post.setRequestHeader("Accept", "*/*");
		post.setRequestHeader("Accept-Encoding", "gzip, deflate");
		post.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
		post.setRequestHeader("Cache-Control", "no-cache");
		post.setRequestHeader("Connection", "keep-alive");
		post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		post.setRequestHeader("Host", "www.belink.com");
		post.setRequestHeader("Pragma", "no-cache");
		post.setRequestHeader("Referer", "https://www.belink.com/portal/app");
		post.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0");
		post.setRequestHeader("X-Requested-With", "XMLHttpRequest");
		try {
			client.executeMethod(post);
		} catch (HttpException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("分享日志提交状态:"+post.getStatusLine());
		if(post.getStatusCode()==HttpStatus.SC_OK)
		{
			System.out.println(post.getResponseBodyAsString());
			post.releaseConnection();
			return true;
		}
		
		return false;
	}
}
分享到:
评论

相关推荐

    QQ空间日志全自动监控器

    QQ空间日志全自动监控器是一款专门针对QQ空间设计的实用工具,它的主要功能是对指定的QQ号码进行实时监控,一旦该QQ用户发布了新的日志,该软件会立即自动发表评论。这一工具对于那些想要及时回应朋友动态或者进行...

    什么值得买自动签到,自动发表评论,自动发送签到结果邮件.zip

    标题中的“什么值得买自动签到,自动发表评论,自动发送签到结果邮件”表明这是一个自动化脚本或程序,用于在“什么值得买”(Smzdm)网站上执行一系列任务,包括用户日常的签到操作,发表评论,并将签到的结果通过...

    selenium脚本实现网站自动签到发表心情源码.rar

    自动签到通常用于社区论坛、社交网络或者在线服务,这些平台鼓励用户每天登录并参与互动。而“发表心情”则可能是指在用户个人资料或动态中添加文字或表情来表达当前的情绪状态,常见于社交网络。 【文件内容推测】...

    自动发说说自动换图片

    使用易语言,开发者可以编写自动化脚本来控制软件的行为,比如模拟用户操作,定时执行任务等。 2. **API接口调用**:为了与QQ空间进行交互,需要使用QQ提供的API接口。这些接口允许程序发送请求,执行诸如发布说说...

    51博客发表文章.rar

    在这个案例中,我们需要模拟用户登录并发送文章数据到51博客的服务器。 5. **数据处理**:在自动化发表文章的过程中,需要处理用户名、密码、文章标题、内容等信息。这些数据可能需要进行编码、加密或者格式转换,...

    PHP实例开发源码—QQ空间说说自动抢一楼源码.zip

    这个功能在社交媒体营销或者互动活动中非常常见,目的是在用户发布说说后能第一时间自动发表评论,以获取更多的曝光和互动。 首先,我们要理解PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发。它的语法...

    thinksns补丁

    通过应用这个补丁,Thinksns的使用者可以享受到一个更加稳定、高效且安全的发表日志功能,同时也能为开发团队提供一个良好的实践平台,学习如何利用Selenium进行自动化测试。这对于持续改进和维护Thinksns系统至关...

    对QQ空间操作的DLL QZoneHelper

    4. **发表日志**:对于更复杂的文字内容,如文章或日记,QZoneHelper提供了发表日志的接口。开发者可以上传文本、图片甚至视频,创建一篇完整的QQ空间日志。 5. **评论日志**:与评论说说类似,CQZoneH类同样支持对...

    用python实现的一个自动爬取文献的小爬虫.zip

    例如,爬虫可能会找到论文标题、作者、摘要、发表日期等元素。 3. **数据存储**:爬取的文献信息通常需要保存到本地或数据库中。Python提供了许多数据处理库,如`pandas`用于创建DataFrame,便于数据操作;`sqlite3...

    易语言定时回帖

    6. **发表帖子**:根据论坛的规则和接口,构造合适的POST请求,包含帖子内容和必要的参数,然后发送请求发表回帖。 7. **导出列表**:在执行完回帖操作后,可能需要将回帖结果导出为列表,便于查看和分析。易语言的...

    易语言QQ空间人气精灵源码.7z

    5. **自动浏览、点赞、评论**:这些是人气精灵的主要功能,通过模拟用户操作,自动进行页面访问、对内容点赞和发表评论,以此来增加QQ空间的活跃度和人气值。需要注意的是,这种行为可能违反QQ空间的使用规则,过度...

    我们实验室的需求分析

    4. **界面模拟图**:包括游客、成员和管理员的登录界面,研究所首页,登录后的界面,发表日志和留言的功能等。 **五、数据库操作** 对于研究所网站,数据库操作主要包括公告管理、成员信息管理、博文管理和评论...

    qq空间说说一键发表 草草一键发表QQ说说 v1.0

    同时,软件可能还集成了自动化脚本技术,如JavaScript或自动化测试框架,来模拟用户的点击和输入行为,实现一键发表。 此外,压缩包中的"caocaoyjss-v1.0"可能是该软件的可执行文件名,表明这是草草一键发表QQ说说...

    百度空间互踩软件1.0

    在互联网早期,个人网络空间,如百度空间,是一个流行的社交平台,用户可以发表日志、分享图片并互动。"百度空间互踩"是当时一种常见的社交行为,它指的是用户访问他人的空间并留下访问记录,以示友好或增加人气。...

    Frozen dream

    回贴机则是一种能够自动在贴吧发布回复的程序,可能是为了模拟用户互动,提高帖子热度或者执行其他自动化任务。 在深入讨论之前,我们需要理解一些基本概念。首先,服务器(Server)通常是指在网络环境中提供服务的...

    smartRPA

    它允许轻松地记录事件日志并自动生成可执行的RPA脚本,该脚本会驱动SW机器人在执行感兴趣的例程期间模拟观察到的用户行为(以前记录在专用的UI日志中)。作者SmartRPA已发展为诊断,由罗马大学的电脑,控制和管理...

    美科新闻抓取程序

    此外,考虑到新闻网站可能会有反爬策略,如验证码、IP限制等,"美科新闻抓取程序"可能还集成了模拟登录、设置请求头、随机延时等技巧,以避免被目标网站封锁。同时,为保证抓取效率,程序可能还采用了多线程或异步IO...

    C#顶贴工具源码

    C#可以构建HTTP请求的POST数据,并设置合适的请求头,模拟浏览器行为提交数据。 4. **多线程/异步编程**:为了提高效率,顶贴器可能需要并发处理多个帖子。C#提供了Task类和async/await关键字,支持异步编程,使得...

    sina-weibo-robot:新浪微博机器人程序

    自动登录功能通常依赖于模拟登录机制,可能涉及到网页解析(如BeautifulSoup或lxml库)和处理cookies及session。关注功能则需要正确地发送HTTP请求到微博的关注接口,而发表心情则涉及到微博的发布接口,可能需要...

    2016教师信息化应用培训模拟题(第1套).docx

    发表日志:这不是主要环节之一。 综上所述,通过以上知识点的详细介绍,我们可以更好地理解信息技术在教育教学中的应用,尤其是针对Excel、PowerPoint以及Microsoft Word等常用办公软件的使用技巧。这些技能对于...

Global site tag (gtag.js) - Google Analytics