package com.ws;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//1.首先下载apache的httpClient。。
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

/**
*
* @author zk 自动回复灌水乐园帖子
*
*/
public class Csdn {
public static String COOKIE = "你的登陆后cookie";
private static final String CONTENT_CHARSET = "UTF-8";// httpclient使用的字符集

@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception, IOException {
List<String> urlList = TestUrl.getCardPostUrl(TestUrl.getCsdn(null));
getCard(urlList);
// getMethodTest();
}

public static void getMethodTest() throws Exception, IOException {
String html = "http://hi.csdn.net/my.html";
HttpClient hc = getHc();
GetMethod getMethod = new GetMethod(html);
List<Header> headers = new ArrayList<Header>();
headers.add(new Header("Proxy-Connection", "keep-alive"));
headers.add(new Header("Cookie", COOKIE));
hc.getHostConfiguration().getParams().setParameter(
"http.default-headers", headers);

int statusCode = hc.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + getMethod.getStatusLine());
}
// 读取内容
byte[] responseBody = getMethod.getResponseBody();
// 处理内容

String hh = new String(responseBody);

System.out.println(hh);

}

public static HttpClient getHc() {
HttpClient httpClient = new HttpClient();
// java client将按照浏览器的方式来自动处理
httpClient.getParams().setCookiePolicy(
CookiePolicy.BROWSER_COMPATIBILITY);
httpClient.getHostConfiguration().setHost("http://www.csdn.net", 80,
"http");
return httpClient;
}

public static void getCard(List<String> urlList) throws Exception,
IOException {
HttpClient httpClient = null;
PostMethod p = null;
List<Header> headers = null;
NameValuePair __VIEWSTATE = null;
NameValuePair __EVENTVALIDATION = null;
NameValuePair BT_SUBMIT = null;
NameValuePair REPLYBODY = null;
NameValuePair[] params = null;
for (String url : urlList) {
headers = new ArrayList<Header>();
httpClient = getHc();
p = new PostMethod(url);
// 需要验证
// UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb", "123456");

headers.add(new Header(
"User-Agent",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6 (.NET CLR 1.1.4322)"));
headers.add(new Header("Proxy-Connection", "keep-alive"));
headers.add(new Header("Cookie", COOKIE));
headers.add(new Header("Content-Type",
"application/x-www-form-urlencoded;charset=" + CONTENT_CHARSET));
httpClient.getHostConfiguration().getParams().setParameter(
"http.default-headers", headers);
__VIEWSTATE = new NameValuePair(
"__VIEWSTATE",
"/wEPDwUKMTA2MTA3Njg5NA9kFgICCQ9kFgJmD2QWAgIFD2QWAmYPZBYCZg8PFgIeBE1vZGULKiVTeXN0ZW0uV2ViLlVJLldlYkNvbnRyb2xzLlRleHRCb3hNb2RlARYCHgVzdHlsZQUYaGVpZ2h0OjE4MHB4O3dpZHRoOjEwMCU7ZGRpl2NuIb2XmIUODhEniCtEXExdOA==");
__EVENTVALIDATION = new NameValuePair(
"__EVENTVALIDATION",
"/wEWAwLtl7ScBQK6873ZCgK3mOXeAjqcUaoqnb3Nj0uKUrGKImKcexCG");

BT_SUBMIT = new NameValuePair("bt_submit", "提交回复");

REPLYBODY = new NameValuePair(
"tb_ReplyBody$_$Editor", "[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img]");

params = new NameValuePair[] { __VIEWSTATE,
__EVENTVALIDATION, REPLYBODY, BT_SUBMIT };
p.setRequestBody(params);
int statusCode = httpClient.executeMethod(p);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + p.getStatusLine());
}
System.out.println("Hello,World");
// 读取内容
//byte[] responseBody = p.getResponseBody();
// 处理内容

//String hh = new String(responseBody);
//System.out.println(hh);
}

}
}

package com.ws;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.lang.StringUtils;

public class TestUrl {

public static final String COOKIE = "登陆后cookie"                  
* 连接超时
*/
private static int connectTimeOut = 5000;

/**
* 读取数据超时
*/
private static int readTimeOut = 10000;

/**
* 请求编码
*/
private static String requestEncoding = "GBK";

/**
* 得到大分类的帖子 如:java
* @param java
* @return
* @throws Exception
*/
public static List getCsdn(String java) throws Exception {
List<String> urlList = new ArrayList<String>();
String url = "http://forum.csdn.net/SList/FreeZone";
String patternStrs = "<td class=\"caption\" style=\"word-break: break-all\">(.*?)</td>";
String p = "<a target=\"_blank\" title=\"(.*?)</a>";
String href = "<a target=\"_blank\" title=\"(.*?)\" href=\"(.*?)\" >(.*?)</a>";
String s = "";
String h = "";
URL u = new URL(url);
StringBuffer sTotalString = new StringBuffer("");
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.addRequestProperty("Cookie", COOKIE);

String sCurrentLine = "";
BufferedReader l_reader = new java.io.BufferedReader(
new java.io.InputStreamReader(u.openStream()));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString = sTotalString.append(new StringBuffer(sCurrentLine
+ "\n"));
s = RegexpCommon.getMatchString(sCurrentLine, p, 0);
if (StringUtils.isNotBlank(s)) {
h = RegexpCommon.getMatchString(s, href, 2);
System.out.println("得到的URL为:" + h);
urlList.add(h);
}

}

// byte[] b = (sTotalString.toString()).getBytes();
// BufferedOutputStream out = new BufferedOutputStream(
// new FileOutputStream("c:/test.html"));
// out.write(b);
return urlList;
}

/**
* 得到帖子的回复地址
* @param urlList
* @return
* @throws Exception
*/
public static List getCardPostUrl(List<String> urlList) throws Exception {
List<String> postList = new ArrayList<String>();
URL u = null;
HttpURLConnection conn = null;
BufferedReader l_reader = null;
String s = "";
for (String URL : urlList) {
u = new URL(URL);
StringBuffer sTotalString = new StringBuffer("");
conn = (HttpURLConnection) u.openConnection();
conn.addRequestProperty("Cookie", COOKIE);

String sCurrentLine = "";

String patternStrs = "iframe class=\"replyframe\" id=\"replyframe\" frameborder=\"0\" scrolling=\"no\" height=\"415px\" width=\"100%\" src=\"(.*?)\" csdnid=\"rframe\">";
l_reader = new java.io.BufferedReader(
new java.io.InputStreamReader(u.openStream()));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString = sTotalString.append(new StringBuffer(sCurrentLine
+ "\n"));
}
conn.disconnect();
s = RegexpCommon.getMatchString(sTotalString.toString(),
patternStrs, 0);
s = s.split("src=\"")[1].split("\" csdnid")[0];
System.out.println(s);
postList.add(s);
}
return postList;

}

public static void main(String[] args) throws Exception {
String s = "http://forum.csdn.net/PointForum/Forum/ReplyT.aspx?forumID=a3049f56-b572-48f5-89be-4797b70d71cd&topicID=b9fbc233-fadf-441b-aad8-2d6a77641f16&postDate=2010-02-01+08%3a40%3a49&v=13";
String d = "tb_ReplyBody___Editor=回复测试!!!";
// GetResponseDataByID(s, d);
//GetResponseDataByID(s, d);
//t();
List<String> urlList = getCsdn(null);
}

}

1.登陆验证码一直没攻克,所以是使用的cookie。

2.注释少了点。

CSDN自动回复灌水乐园帖子-httpClient篇相关推荐

  1. 用Python提取CSDN灌水乐园的帖子

    无聊的很,写了个程序来提取CSDN灌水乐园的帖子.主要使用了urllib和re两个库. 可以提取帖子的标题,链接,分值和回复数. 代码如下:(就不解释了) # -*- coding: utf-8 -* ...

  2. 前辈之路[摘自CSDN灌水乐园 袁峰贴]

    1) 基本功: 数学: 关键是分析问题, 解决问题的能力      小学: 数学最好        中学: 数学课代表, 数理化全校第一(苏州三中).      大学: 想考数学系, 没考上, 上了上 ...

  3. CSDN全自动灌水机

        2006年4月 CSDN全自动灌水机 老见有人在CSDN上"哦"个不停,怀疑是用的Robot,在WSH中试了下可以用ActiveX,所以写了这么个东西,替我去接分 :D 把 ...

  4. 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:青塔人才.知乎Molecule 7月10日,来自徐州工程学 ...

  5. 二本本科生连发10篇SCI被喷“灌水严重”?原来是因为......

    近日,徐州工程学院的万仲禹同学因发10篇SCI并且获香港城市大学全额奖学金直博资格,引发了各界热议,目前万仲禹本人已做出回应,表示"希望成千上万的二本学生看到,我们没有985/211的条件, ...

  6. 第一个帖子,先灌灌水

    灌水也要有内容,建议大家看看:http://expert.csdn.net/Expert/topic/2904/2904082.xml 这世界,快没有公理了.

  7. 【来灌灌水】~~感谢csdn平台给予新手学习的地方

    小白来了,疯狂灌水! 大一刚接触c 学习(how) 最后,做总结! 大一刚接触c 先学会打印printf,scanf,gets,puts,等等基本的知识. 理解记忆对于我们来说是新的知识的内容 例如: ...

  8. 连发10篇SCI!徐州二本学霸全奖直博香港城大引热议,被疑论文「灌水」严重...

    来源丨新智元 编辑丨yaxin 来源:zhihu 编辑:yaxin [导读]近日,一位徐州工程学院的本科生万仲禹连发10篇SCI,直博香港城市大学,却被网友怀疑严重「灌水」,引发热议.当事人对此进行回 ...

  9. 史上最强灌水:奇葩的MEGA 精选 科学网薛宇老师

    http://blog.sciencenet.cn/blog-404304-725339.html 做学术的人,如果不是全部,那起码99.99...%的人绝对是强烈反感灌水.所以前辈们总是循循善诱的教 ...

最新文章

  1. 一键获取解锁码_Windows 骚操作:轻轻一按手机指纹解锁电脑!
  2. 【gradle】问题及解决
  3. gridview汇出EXCEL (ExportGridViewToExcel(dt, HttpContext.Current.Response);)
  4. 安卓代码迁移:ActionBarActivity: cannot be resolved to a type
  5. JavaFX 2 GameTutorial第1部分
  6. c235delc杂合变异遗传吗_血常规正常就真的没有地贫吗?
  7. phpcms v9 wap手机门户分页(显示首页末页)
  8. 基于STM32单片机的FM调频TEA5767功放收音机方案原理图设计
  9. 写好软文标题的10个方式
  10. mysql连接泄露 定位_数据库连接泄露一例
  11. 三、OpenDaylight应用基础开发(ODL的Hello World)
  12. 【图片新闻】俄罗斯水下核武器“海啸天启鱼雷”探秘
  13. Python实例6: 贺卡制作
  14. 【华为机试真题Python】工厂流水线调度
  15. creator物理引擎 /RPG运动类型 /坦克
  16. Photoshop简单案例(8)——利用文字工具修改图片上文字
  17. hloj#168“倒牛奶”解题讨论
  18. java统一返回结果集封装,解决No converter found for return value of type
  19. 移动端软件测试面试题及答案-2021年最新版
  20. 楷体描红字帖练起来@简洁字帖

热门文章

  1. Muli3D源码分析(1) - 框架概览
  2. #644 (Div. 3)F. Spy-string(暴力枚举)
  3. Webpack 安装
  4. Python 3 条件判断和循环语句,list、tuple、dict、set容器,部分函数
  5. 解决Mac互联网连接问题的方法
  6. Queue和Deque
  7. 重新学习JSP之五——投票系统
  8. L1-079 天梯赛的善良 (20 分)
  9. SQL Studio
  10. [转]黄金圣斗士处女座沙加读解