`
leidiqiu
  • 浏览: 135065 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 编写代码自动在 discuz 7.2 的论坛上发帖子

    博客分类:
  • JAVA
阅读更多

 

     遇到一个 Powered by discuz 7.2 ! 的论坛,有积分的限制,很是不爽,发帖可以增加积分,所以花了点时间琢磨弄个自动发帖机,以下是基本的代码和原理说明,要实现自动发帖,循环执行以下代码即可。(注意发帖的时间间隔限制)

 

package com.ldq;

import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

public class MyNewTopic {

	private static URL url;
	private static HttpURLConnection con;
	private static String temp;
	private static InputStream is;
	private static byte[] b;
	private static int pos;
	private static String cookie_sid;
	private static String cookie_auth;
	private static String my_cookie;
	private static String login_formhash;
	private static String post_formhash;
	private static String user = "test";// 用户名
	private static String pass = "test";// 密码
	private static String new_fid = "11";// 版块 ID
	private static String subject = "新主题";// 标题
	private static String msg = "这里是新主题的内容";// 帖子内容

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {

			// 获取 cookie_sid 和 login_formhash --------------------
			url = new URL("http://192.168.72.130/bbs/logging.php?action=login");
			con = (HttpURLConnection) url.openConnection();
			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
				// 获取服务器发给客户端的 Cookie
				temp = con.getHeaderField("Set-Cookie");
				System.out.println("Set-Cookie:" + temp);
				// 取 Cookie 前面的部分就可以了,后面是过期时间、路径等,不用管它
				cookie_sid = temp.substring(0, 14);
				System.out.println(cookie_sid);

				is = con.getInputStream();
				b = new byte[is.available()];
				is.read(b);
				// 服务器会返回一个页面,此页面中包含 formhash
				temp = new String(b);
				// 找出这个 formhash 的位置
				pos = temp.indexOf("name=\"formhash\" value=");
				// System.out.println(temp);
				// 找出这个 formhash 的内容,这是登录用的 formhash
				login_formhash = temp.substring(pos + 23, pos + 23 + 8);
				System.out.println("login_formhash:" + login_formhash);
				System.out
						.println("------------------------------------------------------------");
				is.close();
			}

			// 获取cookie_auth -----------------------------------------------
			url = new URL("http://192.168.72.130/bbs/logging.php");
			con = (HttpURLConnection) url.openConnection();

			// 设定以 POST 发送
			con.setRequestMethod("POST");
			// 加入 Cookie 内容
			con.setRequestProperty("Cookie", cookie_sid);
			// 添加 POST 的内容
			con.setDoOutput(true);
			OutputStreamWriter osw = new OutputStreamWriter(con
					.getOutputStream());
			osw
					.write("action=login&loginfield=username&questionid=0&answer=&loginsubmit=yes&formhash="
							+ login_formhash
							+ "&username="
							+ user
							+ "&password=" + pass);
			osw.flush();
			osw.close();

			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
				Map<String, List<String>> map = con.getHeaderFields();
				List<String> list = map.get("Set-Cookie");
				for (int i = 0; i < list.size(); i++) {
					temp = list.get(i);
					if (temp.contains("CsN_auth")) {
						System.out.println(temp);
						// 取 Cookie 前面的部分就可以了,后面是过期时间、路径等,不用管它
						cookie_auth = temp.split(";")[0];
						System.out.println("cookie_auth:" + cookie_auth);
					}
				}

				is = con.getInputStream();
				byte[] b = new byte[is.available()];
				is.read(b);
				// System.out.println(new String(b));
				System.out
						.println("------------------------------------------------------------");
				is.close();
			}

			// 正式登录
			url = new URL(
					"http://192.168.72.130/bbs/post.php?action=newthread&fid="
							+ new_fid);
			HttpURLConnection con = (HttpURLConnection) url.openConnection();

			my_cookie = cookie_sid + ";" + cookie_auth;
			System.out.println(my_cookie);
			// 加入 Cookie 内容
			con.setRequestProperty("Cookie", my_cookie);

			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
				is = con.getInputStream();
				byte[] b = new byte[is.available()];
				is.read(b);
				temp = new String(b);
				pos = temp.indexOf("id=\"formhash\" value=");
				// System.out.println(temp);
				// 获得发帖用的 formhash
				post_formhash = temp.substring(pos + 21, pos + 21 + 8);
				System.out.println("post_formhash:" + post_formhash);
				System.out
						.println("------------------------------------------------------------");
				is.close();
			}

			// 发新帖子
			url = new URL("http://192.168.72.130/bbs/post.php");
			con = (HttpURLConnection) url.openConnection();

			con.setRequestMethod("POST");
			con.setRequestProperty("Cookie", my_cookie);
			con.setDoOutput(true);
			osw = new OutputStreamWriter(con.getOutputStream());
			temp = "action=newthread&topicsubmit=yes&subject=" + subject
					+ "&formhash=" + post_formhash + "&fid=" + new_fid
					+ "&message=" + msg;
			osw.write(temp);
			osw.flush();
			osw.close();

			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
				is = con.getInputStream();
				byte[] b = new byte[is.available()];
				is.read(b);
				// System.out.println(new String(b));
				System.out
						.println("------------------------------------------------------------");
				is.close();
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

 

     

      正好 2010-01-06 22:01,太晚了,再不走赶不上末班地铁了,原理下次再发帖详细说明吧。

 

3
0
分享到:
评论

相关推荐

    Discuz_7.2论坛安装源代码

    Discuz_7.2_FULL_SC_UTF8.zip Discuz_7.2_FULL_SC_UTF8.zip Discuz_7.2_FULL_SC_UTF8.zip Discuz_7.2_FULL_SC_UTF8.zip

    最新discuz模板discuz7.2用的

    2. 布局设计:可能会采用响应式设计,适应不同设备的屏幕大小,保证在手机、平板和电脑上都有良好的显示效果。 3. 功能模块:除了基本的论坛功能,可能还集成了广告位、会员中心、搜索框、导航栏等常见模块,以提供...

    DISCUZ7.2英文版

    1. **下载与解压**:首先从官方或可靠渠道下载DISCUZ7.2ENGLISHBYCOOBY.rar文件,解压缩后得到完整的程序包。 2. **服务器环境准备**:确保服务器运行PHP和MySQL,符合Discuz! 7.2的系统需求。 3. **安装向导**:...

    Discuz7.2 发贴API

    【标题】"Discuz7.2 发贴API" 涉及的知识点主要集中在Discuz论坛系统的API开发和使用上,尤其是与帖子发布相关的接口功能。Discuz是中国一款非常流行的开源社区论坛软件,其API允许开发者通过编程方式与论坛进行交互...

    discuz7.2在线观看插件from yang开发

    "bbsswf在线观看插件fromyang开发"正是为此而生,它使得用户无需离开论坛页面,即可直接在帖子中流畅地观看SWF文件,极大地提升了用户在论坛上的停留时间和互动程度。 该插件的安装过程简单便捷,用户只需将下载的...

    Discuz_7.2_UTF8环境.rar

    7.2是一款深受广大站长喜爱的开源论坛系统,它以其强大的社区功能和灵活的扩展性,在中文互联网环境中占据了重要的地位。该系统支持UTF8编码,能够处理各种语言文字,尤其适合多语种交流的社区平台。本文将围绕...

    DIscuz7.2蓝色社区模板插件

    DIscuz7.2是一款备受推崇的社区论坛软件,其强大的功能和灵活的扩展性使得它在互联网上拥有广泛的用户基础。其中,蓝色社区模板插件是DIscuz7.2中的一款重要组件,它的出现极大地丰富了用户的网站设计选择,使门户与...

    Discuz_7.2 Ucenter整合

    1. favicon.ico:网站的图标,显示在浏览器的收藏夹或标签页上,代表论坛的形象。 2. misc.php:杂项处理文件,包含了论坛的多种非核心功能,如统计、搜索等。 3. stats.php:统计功能文件,用于收集论坛的访问量、...

    Discuz! 7.2

    7.2是社区论坛软件的里程碑式版本,它在原有基础上进行了大量的更新和优化,旨在提升用户体验和社区管理效率。这一版本的核心目标是打造一个更加便捷、高效、个性化的互动平台,以满足不断变化的网络社区需求。 ...

    Discuz7.2 Water3风格

    Discuz7.2 Water3风格 1. 1、将附件下载后解压缩到当前文件夹,得到一个“water7.2”文件夹; 2. 2、将这个文件夹拷贝到你的论坛的“templates”目录下; 3. 3、登录到论坛后台,到“界面”→“风格管理”,在...

    DZ插件 自动回帖超人 商业版-7.2.zip

    《DZ插件 自动回帖超人 商业版-7.2》是一款专为Discuz! 论坛系统设计的高效能插件,旨在提升论坛互动性与用户活跃度。这款商业版本针对7.2版本的Discuz! 进行优化,提供了更稳定、更智能的自动回帖功能,有助于论坛...

    zvchat For Discuz 7.2

    【zvchat For Discuz 7.2】是一款专为Discuz 7.2论坛系统设计的聊天室插件,它利用先进的jQuery Ajax技术实现了页面无刷新的实时聊天功能,大大提升了用户在论坛中的交流体验。这款插件以其轻量级、低资源占用和精巧...

    Discuz!7.2开发手册

    7.2支持移动设备的访问,并提供了相应的API供开发者开发移动端应用,确保论坛在各种设备上的良好体验。 8. **安全性** 安全是任何开发工作的重中之重。Discuz!7.2提供了一些安全机制,如SQL注入防护、XSS防护等,...

    discuz 7.2 utf8.zip

    在这个目录下,你可以找到`source`子目录,其中包含所有系统核心代码,如`class`(类库)、`function`(函数库)和`template`(模板文件)。`data`目录用于存储运行时产生的数据,如缓存、统计信息等。 2. `...

    discuz 7.2-UTF8(人人连接组件)

    例如,用户可以将论坛上的帖子分享到人人网,吸引更多人参与讨论;同时,论坛活动、投票等也可以直接推送到人人网,扩大了社区的影响力。此外,通过人人连接,论坛还可以获取到用户在人人网的社交关系,为推荐内容、...

    Discuz!_7.2使用详细说明

    - **性能优化**:7.2版本在代码优化和数据库查询上做了改进,提高了系统运行效率。 - **安全防护**:具备防SQL注入、XSS攻击等安全措施,保护论坛免受恶意攻击。 8. **故障排查与技术支持** - **日志系统**:...

    discuz7.2注入漏洞faq.php

    复现discuz7.2注入漏洞

    discuz7.2数据字典

    dz 7.2的数据字典。有了它还怕不懂dz吗?

    Discuz_7.2_FULL_SC_UTF8.zip

    本文将详细介绍如何使用"Discuz_7.2_FULL_SC_UTF8.zip"这个压缩包进行安装,让读者能够在自己的服务器上快速搭建一个功能完备的论坛。 首先,我们来了解一下"Discuz_7.2_FULL_SC_UTF8.zip"的含义。Discuz! 7.2 是该...

    Discuz! x7.2论坛风格模板

    论坛风格模板Discuz模板是一款用于社区 蓝色 论坛 交流的模板,适用于discuz! x2.5版本。

Global site tag (gtag.js) - Google Analytics