java HttpClient+Jsoup打造灌水利器再也不怕起火了(二)

2014-11-24 03:26:38 · 作者: · 浏览: 1
e.printStackTrace();
}finally{
try {
response2.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return loginResult;
}
复制代码
登录代码:
复制代码
public boolean login(){
boolean flag = false;
LoginResult loginResult = getRedirectUrl();
if(loginResult.getResult().equals("true")){
cookieStore = new BasicCookieStore();
globalClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
HttpGet httpGet = new HttpGet(loginResult.getRedirect());
httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.8");
httpGet.setHeader("Connection", "keep-alive");
httpGet.setHeader("Host", HOST);
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
try {
globalClient.execute(httpGet);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
List cookies2 = cookieStore.getCookies();
if (cookies2.isEmpty()) {
log.error("cookie is empty");
} else {
for (int i = 0; i < cookies2.size(); i++) {
}
}
}
return flag;
}
复制代码
到此已经登录成功可以进行只有登录号才能做的事了,什么?你不知道当然是灭火了
首先取得需要回复的帖子地址,列表页比较有规律所有没有写自动发现的所以写了个循环@1
复制代码
for(int i=1;i<200;i++){
String basurl="http://bbs.dakele.com/forum-43-"+i+".html";
log.info(basurl);
List urls = dakele.getThreadURLs(basurl);
for(String url:urls){
//log.info(url);
ReplayContent content = dakele.preReplay(url);
if(content!=null){
log.info(content.getUrl());
log.info(content.getMessage());
//dakele.replay( content);
//Thread.sleep(15300);
}
}
}
复制代码
在列表页内获取帖子地址:
复制代码
String html = EntityUtils.toString(entity);
Document document = Jsoup.parse(html,HOST);
Elements elements=document.select("tbody[id^=normalthread_] > tr > td.new > a.xst");
for(int i=0;i
Element e = elements.get(i);
urList.add(e.attr("abs:href"));
}
复制代码
在需要回复的帖子内获得需要提交的form表单地址以及构造回复内容
复制代码
public ReplayContent preReplay(String url){
ReplayContent content = null;
HttpGet get = new HttpGet(url);
get.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
get.setHeader("Accept-Language", "zh-CN,zh;q=0.8");
get.setHeader("Connection", "keep-alive");
get.setHeader("Host", HOST);
get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
try {
CloseableHttpResponse response = globalClient.execute(get);
HttpEntity entity = response.getEntity();
S