最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java模擬HTTP Get Post請求實現(xiàn)論壇自動回帖功能

 更新時間:2016年09月05日 15:17:37   投稿:lijiao  
這篇文章主要介紹了Java模擬HTTP Get Post請求實現(xiàn)論壇自動回帖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近想自動發(fā)帖回帖,拿某論壇試驗了一下,發(fā)現(xiàn)可行,不過后續(xù)沒有再使用,以免影響論壇正常運行。

1、帖子鏈接的格式為
http://bbs.***.***.**/forum.php?mod=viewthread&tid=774210

最后面774210數(shù)字變化, 就可以得到不同的帖子

2、防止帖子發(fā)表會又被刪了的情況, 進行判斷帖子是否存在

3、遞增后面的 id 數(shù)字, 對每個鏈接做回帖的 POST 請求

重難點

回帖需要用戶登錄信息
一種是利用Cookie
另一種是進行模擬登錄

本文采用前者

判斷 url 對應(yīng)的帖子是否存在
有可能用戶發(fā)了帖子,比如 url 為 http://bbs.***.***.**/forum.php?mod=viewthread&tid=774200

后來該帖子用戶刪除了或者被管理員刪除了,雖然帖子不在了,但是該 tid=774200 還是存在的

public static boolean isExist(int id) {
 String tmpPath = baseRefer + id;
 URL url;
 try {
 url = new URL(tmpPath);
 HttpURLConnection con = (HttpURLConnection) url.openConnection();
 con.addRequestProperty("Content-Type", "text/html; charset=UTF-8");
 con.addRequestProperty(
  "User-Agent",
  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36");
 con.addRequestProperty("Referer", "http://t.dianping.com/register");
 con.setRequestMethod("GET");
 if (con.getResponseCode() == 200) {
  InputStream inputStr = con.getInputStream();
  String info = new String(StreamTool.read(inputStr), "UTF-8");
  if (info.contains("抱歉,指定的主題不存在或已被刪除或正在被審核")) {
  System.out.println("id=" + id + "帖子存在或已被刪除!");
  return false;
  }
 }
 } catch (MalformedURLException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 return true;
}

模擬發(fā)帖
代碼比較簡單,注意事項是找到自己的Cookie,賦給String yourCookeie

用post發(fā)送一個回帖,回帖信息在 mapData.put("message", "友情幫頂了") 中

private static final String baseRefer = "http://bbs.**.**.**/forum.php?mod=viewthread&tid=";
private static final String yourCookeie = "Q8qA_2132_saltkey=**; Q8qA_2132_lastvisit=****3699;";
public static void main(String[] args) {
 int startId = 774210; // you need change
 for (int i = 0; i < 100; i++) {
 postMessage(startId);
 startId++;
 }
}
public static void postMessage(int id) {
 if (!isExist(id)) {
 return;
 }
 String tmpPath = baseRefer + id;
 StringBuilder path = new StringBuilder(tmpPath);
 Map<String, String> mapData = new LinkedHashMap<String, String>();
 mapData.put("mod", "post");
 mapData.put("action", "reply");
 mapData.put("replysubmit", "yes");
 mapData.put("infloat", "yes");
 mapData.put("handlekey", "fastpost");
 mapData.put("inajax", "1");
 mapData.put("message", "友情幫頂了");
 mapData.put("formhash", "86ec5d81");
 try {
 for (Map.Entry<String, String> mapEnt : mapData.entrySet()) {
  path.append("&");
  path.append(mapEnt.getKey() + "=");
  path.append(URLEncoder.encode(mapEnt.getValue(), "UTF-8"));
 }
 URL url = new URL(path.toString());
 HttpURLConnection con = (HttpURLConnection) url.openConnection();
 con.setRequestMethod("POST");
 con.setRequestProperty("Content-Type",
  "application/x-www-form-urlencoded");
 con.setRequestProperty("Content-Length",
  String.valueOf(path.length()));
 con.setRequestProperty(
  "User-Agent",
  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36");
 con.setRequestProperty("Cookie", yourCookeie);
 con.setDoOutput(true);
 OutputStream outStr = con.getOutputStream();
 outStr.write(path.toString().getBytes());
 if (con.getResponseCode() == 200) {
  InputStream inputStr = con.getInputStream();
  String info = new String(StreamTool.read(inputStr), "UTF-8");
  System.out.println("在id=" + id + "成功發(fā)帖!");
  try {
  Thread.sleep(20 * 1000);
  } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
 }
 } catch (UnsupportedEncodingException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (MalformedURLException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
}

還有一個工具方法,將輸入流轉(zhuǎn)化為字節(jié)

class StreamTool {
 public static byte[] read(InputStream inputStr) throws Exception {
 ByteArrayOutputStream outStr = new ByteArrayOutputStream();
 // TODO Auto-generated method stub
 byte[] buffer = new byte[1024];
 int len = 0;
 while ((len = inputStr.read(buffer)) != -1) {
  outStr.write(buffer, 0, len);
 }
 inputStr.close();
 return outStr.toByteArray();
 }
}

效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Base64加解密的實現(xiàn)方式實例詳解

    Base64加解密的實現(xiàn)方式實例詳解

    這篇文章主要介紹了Base64加解密的實現(xiàn)方式實例詳解的相關(guān)資料,這里提供了實現(xiàn)實例,幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 一道關(guān)于java異常處理的題目

    一道關(guān)于java異常處理的題目

    本文給大家分享一道關(guān)于java異常處理的題目,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Java實現(xiàn)航空航班管理系統(tǒng)

    Java實現(xiàn)航空航班管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)航空航班管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java8中的lambda表達式入門教程

    Java8中的lambda表達式入門教程

    lambda表達式,即帶有參數(shù)的表達式,為了更清晰地理解lambda表達式,下面通過示例代碼給大家介紹java8 lambda 表達式入門教程,感興趣的朋友一起看看吧
    2017-08-08
  • SpringBoot項目構(gòu)建Maven標簽及屬性用法詳解

    SpringBoot項目構(gòu)建Maven標簽及屬性用法詳解

    在?Spring?Boot?項目中,Maven?是最常用的構(gòu)建工具之一,本文將詳細介紹?Maven?依賴管理中的主要標簽及其使用方法,幫助開發(fā)者更好地理解和使用?Maven?構(gòu)建工具,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Java泛型定義與用法入門示例

    Java泛型定義與用法入門示例

    這篇文章主要介紹了Java泛型定義與用法,結(jié)合實例形式分析了java泛型的功能、定義、應(yīng)用場景及相關(guān)使用注意事項,需要的朋友可以參考下
    2019-08-08
  • Java集合類之TreeSet的用法詳解

    Java集合類之TreeSet的用法詳解

    這篇文章主要為大家詳細介紹了Java集合類中TreeSet的用法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定的幫助,感興趣的可以了解一下
    2022-08-08
  • 詳解Spring Boot實現(xiàn)日志記錄 SLF4J

    詳解Spring Boot實現(xiàn)日志記錄 SLF4J

    本篇文章主要介紹了詳解Spring Boot實現(xiàn)日志記錄 SLF4J,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • java實現(xiàn)時鐘效果

    java實現(xiàn)時鐘效果

    這篇文章主要為大家詳細介紹了java實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Java toString方法重寫工具之ToStringBuilder案例詳解

    Java toString方法重寫工具之ToStringBuilder案例詳解

    這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

林芝县| 宁都县| 崇仁县| 汾西县| 安阳县| 即墨市| 浠水县| 黔西| 阿鲁科尔沁旗| 呼图壁县| 诸暨市| 罗城| 黎平县| 云浮市| 灵寿县| 河南省| 蒙山县| 禹州市| 贞丰县| 贵州省| 邯郸县| 新民市| 自贡市| 淮南市| 府谷县| 栾川县| 漳浦县| 桃园县| 莱西市| 噶尔县| 武穴市| 安龙县| 浙江省| 开平市| 梁平县| 民勤县| 翁牛特旗| 博兴县| 成武县| 温宿县| 屏边|