自动访问网站机器人 java
来源:互联网 发布:嵌入式软件退税 编辑:程序博客网 时间:2024/04/30 07:51
真的很久很久没有写过文章了,唉,惭愧啊!寒暄的说话就不多说了,直入主题。有人问过我,如何制作一些论坛的自动发言机器人?我说,这很简单啊,(如果没有图片验证码的话!)在Java里,有些URL,URLConnection的类啊,这些类可以访问一个URL获取数据,可以发送Request,你就可以结合一些类做一个自动发言的了,但用Post发送表单的话,就没有直接的,比较麻烦,如果还要处理Cookie的话,之后我想了想,想到了可以用Jakarta Commons 下面的开源项目啊,有一个项目名叫“HttpClient”的,这个就是用Java写的Http客户端,可以说是一个简单功能的浏览器吧,只是不能解析HTML标签,写这个解析可不是易事。既然我们是写个自动访问网站的程序,就不用解析显示HTML啦。朋友说能写个招聘网站的自动刷新简历的程序就好了,那就用51job为例吧。
首先,你得去下载HttpClient的包。
http://jakarta.apache.org/commons/httpclient
代码不多,我们就先来看看代码吧:
2 import org.apache.commons.httpclient.*;
3 import org.apache.commons.httpclient.methods.*;
4
5 public class HttpTest {
6
7 /**
8 * @param args
9 * @throws Exception
10 */
11 public static void main(String[] args) {
12 //先建立一个客户端实例,将模拟一个浏览器
13 HttpClient client = new HttpClient();
14
15 //这个是URL地址,我经过分析51job网站登录后的跳转到的地址,并分析得它在JavaScript里提交的URL的参数,不同网站就自已分析了,这个就是登录后刷新简历的URL地址
16 String url = "http://my.51job.com/my/Pop_RefreshResume.php?en=0&ReSumeID=88888888&Read=0&ID=88888888";
17
18 //之后再建立一个Post方法请求,提交刷新简历的表单,因为提交的参数较多,所以用Post请求好了
19 PostMethod method = new PostMethod(url);
20
21 //下面的就是将要提交的表单的数据填入PostMethod对象里面,以name , value 对加入!
22 method.addParameter("HPNation", "086");
23 method.addParameter("HPCity","020");
24 method.addParameter("HPNumber","88888888");
25 method.addParameter("FPNation","086");
26 method.addParameter("FPCity","020");
27 method.addParameter("FPNumber","88888888");
28 method.addParameter("FPExtension","000");
29 method.addParameter("MPNation","086");
30 method.addParameter("Mobile","13888888888");
31 method.addParameter("EmailAdd","888@888.com");
32 method.addParameter("ReSumeID","88888888");
33
34 //这里是建立请求时服务器需要用到的Cookie。
35 Cookie cookie = new Cookie(".51job.com","51job","ccry%3D.0%252FZKBaMTmj82%26%7C%26cconfirmkey%3DcpwWgp7FC9FZM%26%7C%26cresumeid%3D88888888%26%7C%26cresumeids88888888d888826%7C8408ilstatus%3D2%26%7C%26cnickname826cenglis8cautologin%3D","/",null,false);
36
37 //将设置好的Cookie加入模拟的客户端里。当请求发生时,就会将Cookie写进请求头里了
38 client.getState().addCookie(cookie);
39 int i=0;
40
41 //开始死循环
42 while(true){
43 try{
44 //这里是要求客户端发送一个请求。直接将PostMethod请求出去。
45 client.executeMethod(method);
46
47 //下面是获取返回的结果
48 InputStream in = method.getResponseBodyAsStream();
49 ByteArrayOutputStream baos = new ByteArrayOutputStream();
50 byte[] buff = new byte[1024];
51 int len = -1;
52 while((len=in.read(buff))!=-1){
53 baos.write(buff, 0, len);
54 }
55 String result = new String(baos.toByteArray());
56
57 //释放资源
58 in.close();
59 baos.close();
60
61 //在51job里,刷新简历成功的话,会返回一些JavaScript代码,里面有个alert()输出“简历已刷新”的信息的,你分析结果,如果有这句话,则成功刷新了。之后就让线程睡眠1分钟后循环刷新!
62 if(result.indexOf("简历已刷新")!=-1){
63 System.out.println("简历已刷新! " + ++i);
64 }else{
65 System.out.println("刷新失败!");
66 }
67 Thread.sleep(60000);
68 }catch(Exception ex){
69 System.out.println("******** Error! ********");
70 try{
71 //出现错误时,再等待20秒后再重新进行刷新。
72 Thread.sleep(20000);
73 }catch(Exception e){
74 System.out.println("******** Thread Error! ********");
75 }
76 }
77 }
78 }
79
80 }
我们再来看看,其实很简单,我们来说明一下。HttpClient将很多Http协议底层的东西都封装了,这样很方便使用,如果自已用Socket写的话,还有处理很多信息,Http协议的三次握手等等的操作,很是麻烦。现在用HttpClient就一步到位了。但要注意一下,51job里面的简历刷新是要先登录后才可以进行的,而熟悉Web开发的人员都知道,登录后服务器就会记录下你的Session,而Session也是基于Cookie的,所以Session ID是以Cookie的方式记录在客户机的,这样每次请求都要将该Cookie发送到服务器验证,这样才可以保证Web的状态。所以,你可以在浏览器里先登录一次。之后找出该网站的Cookie文件,将里面的内容复制出来放上上面代码的Cookie类里面。你也可以用这个HttpClient写一个登录的请求,之后再从ResponseHeader里获取Cookie。至于表单里的信息,就按自已需要填写就行了。就是模拟一个浏览器,将你的简历刷新的表单模拟出来再发送。
在下面,我给出一本电子书给大家下载参考:《Jakarta Commons Cookbook.chm》
[down=attachments/month_0803/020083401424.chm]点击下载此文件[/down
- 自动访问网站机器人 java
- 网站访问机器人程序的java版本和C#版本。
- 网站自动投票机器人实例
- HTTPURLConnect的用法,JAVA访问网站自动发布
- 机器人自动打开浏览器,输入网址,自动访问
- python网站访问自动测试
- python网站访问自动测试
- Java robot 机器人 自动编写 holleword
- 检查是否是引擎爬虫和机器人访问网站
- 网站信息自动抓取类/蜘蛛程序/网络机器人
- shel自动统计网站访问日志
- 每天自动统计网站访问日志
- 手机访问pc网站自动跳转手机端网站代码
- 手机访问PC网站自动跳转到手机网站代码
- 春节期间访问网站,网站自动提示假期祝福框
- 手机访问PC网站自动跳转到手机网站代码
- 手机访问PC网站自动跳转到手机网站代码
- java 充当浏览器访问网站
- 主题:js运算符“||”和“&&”的妙用
- OpenGL入门学习(六)
- pl/sql 实例
- ORA-00265错误分析
- 20皇后有多少解
- 自动访问网站机器人 java
- 求助 上位机
- extjs-panel常用属性
- 从纵横五个方面精细优化你的Oracle
- web.config connectionStrings 数据库连接字符串的解释
- C#解析Json的类
- BrowseInfo ShellExcute
- SVM基本原理
- 浙江大学软件学院