最近想自动发帖回帖,拿某论坛试验了一下,发现可行,不过后续没有再使用,以免影响论坛正常运行。

1、帖子链接的格式为

http://bbs.***.***.**/forum.php?mod=viewthread&tid=774210

最后面774210数字变化, 就可以得到不同的帖子

2、防止帖子发表会又被删了的情况, 进行判断帖子是否存在

3、递增后面的 id 数字, 对每个链接做回帖的 POoqYoJST 请求

重难点

回帖需要用户登录信息

一种是利用Cookie

另一种是进行模拟登录

本文采用前者

判断 url 对应的帖子是否存在有可能用户发了帖子,比如 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

模拟发帖

代码比较简单,注意事项是找到自己的Cookie,赋给String yourCookeie

用post发送一个回帖,回帖信息在 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 mapData = new LinkedHashMap();

mapData.put("mod", "poshttp://www.cppcns.comt");

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 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.w

还有一个工具方法,将输入流转化为字节

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 oqYoJoutStr.toByteArray();

}

}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Java模拟HTTP Get Post请求实现论坛自动回帖功能

本文地址: http://www.cppcns.com/ruanjian/java/162587.html

java模拟安卓get请求,Java模拟HTTP Get Post请求实现论坛自动回帖功能相关推荐

  1. 夜神模拟器模拟安卓测试_使用模拟进行测试

    夜神模拟器模拟安卓测试 如果使用正确的方法,模拟对象将非常有用. 我在需要驱动软件开发使用的帖子中分享了一些使用Mock Objects的经验. 在这篇文章中,我分享了两件事 –使用模拟进行基于合同的 ...

  2. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  3. java 模拟多线程并发_Java中模拟同时并发请求

    有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...

  4. java版安卓按键精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵...

    由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新:https://github.com/xnx3/xnx3 仙人辅助_寻仙自动打怪 /** * 鼠标.键盘.延迟等基本 ...

  5. java之学习记录 5 - 1 - 模拟拉勾项目介绍与后台系统搭建

    项目架构(此文章只供个人学习的记录) 1 项目介绍 拉勾教育后台管理系统,是提供给拉勾教育的相关业务人员使用的一个后台管理系统, 业务人员可以在这个后台管理系统中,对课程信息.讲师信息. 学员信息等数 ...

  6. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet...

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  7. Java程序模拟QQ空间登录 - 并模拟刷说说的赞(图文) 注意:腾讯修改了加密算法,已失效(2015-01-31)

    Java程序模拟QQ空间登录 - 并模拟刷说说的赞 背景:在2013-10-25的一天,有个friend在QQ问我:"post登陆QQ空间抓取不到post的数据".于是故事就开始了 ...

  8. java模拟登录百度_模拟登陆百度的Java实现

    常常需要爬取百度统计出来的数据,难免要进行百度的模拟登陆!现将程序贴出来,供他人也供自己以后使用: ? ? package org.baidu; import java.util.List; impo ...

  9. java 12306 模拟登陆_请教java尝试模拟登录12306时遇到的一个问题

    展开全部 首先12306网站前32313133353236313431303231363533e78988e69d8331333363386133缀为"https://" 表明是用 ...

  10. java+postgis实现根据两点生成模拟轨迹gps数据

    java+postgis实现根据两点生成模拟轨迹gps数据 文章目录 java+postgis实现根据两点生成模拟轨迹gps数据 前言 一.实现流程 1.请求参数 2.功能流程 3.postgis重要 ...

最新文章

  1. 2017年终奖发放,程序员人均11776元排名第一!
  2. 缓冲区溢出漏洞攻击之用户登录
  3. Linux系统编程2:基础篇之详解Linux中的权限问题
  4. elasticsearch 部署
  5. Linux AIO的新归宿:io_uring(介绍,系统调用)
  6. 机器学习6/100天-Logistic实践
  7. Laravel Cache 的缓存文件在到期后是否会自动删除
  8. 线程安全的atomic wrapper classes例子
  9. CS229学习笔记(3)逻辑回归(Logistic Regression)
  10. Android 应用的启动方式
  11. 数据结构之队列java版
  12. yum install mysql-server 指定版本_mysql 指定版本安装
  13. 关于备考软考过程中历年真题的说明
  14. python汉化包放哪_python 汉化
  15. nova红a6se升级鸿蒙,华为nova 8 SE配置揭晓:麒麟芯片到底是没了
  16. [Vue warn]: Error in callback for watcher “lists“: “TypeError: Cannot read property ‘length‘ of unde
  17. N-Tiers開發方式(ASP/ASP.NET、VB6/VB.NET呼叫使用COM+元件)
  18. logcat日志的五种级别
  19. 友盟+吕志国:数据智能让天下没有难做的营销
  20. 8. 监督学习的统计理论

热门文章

  1. tomcat下部署activemq(转)
  2. SecureCRT 绝佳配色方案
  3. Flex一个RemoteObject调用JAVA对象里面的多个方法
  4. 在Exchange Server 2007中修改邮件接受域
  5. mongo-connector导入数据到Es
  6. Java Map 接口
  7. Kubernetes1.4即将发布
  8. groovy学习(四)io
  9. 引用了System.Configuration命名空间,却找不到ConfigurationManager类
  10. 整理cin.getline与getline函数