discuz x2/x2.5模拟登陆、发帖、回帖php代码

2023-10-20 09:38

本文主要是介绍discuz x2/x2.5模拟登陆、发帖、回帖php代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

discuz x2/x2.5模拟登陆、发帖、回帖php代码

<?

                $discuz_url = 'http://www.91mkt.com/';//论坛地址

                $login_url = $discuz_url .'member.php?mod=logging&action=login';//登录页地址

 

                $post_fields = array();

                //以下两项不需要修改

                $post_fields['loginfield'] = '用户名';

                $post_fields['loginsubmit'] = 'true';

                //用户名和密码,必须填写

                $post_fields['username'] = $users[array_rand($users,1)];

                $post_fields['password'] = '密码';

                //安全提问

                $post_fields['questionid'] = 0;

                $post_fields['answer'] = '';

                //@todo验证码

                $post_fields['seccodeverify'] = '';

 

                //获取表单FORMHASH

                $ch = curl_init($login_url);

                curl_setopt($ch, CURLOPT_HEADER, 0);

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

                $contents = curl_exec($ch);

                curl_close($ch);

                preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);

                if(!empty($matches)) {

                        $formhash = $matches[1];

                } else {

                        die('Not found the forumhash...');

                }

 

 

 

                //POST数据,获取COOKIE,cookie文件放在网站的temp目录下

                $cookie_file = tempnam('/tmp','cookie');

 

                $ch = curl_init($login_url);

                curl_setopt($ch, CURLOPT_HEADER, 0);

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

                curl_setopt($ch, CURLOPT_POST, 1);

                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);

                curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

                curl_exec($ch);

                curl_close($ch);

 

                //取到了关键的cookie文件就可以带着cookie文件去模拟发帖,fid为论坛的栏目ID

                $send_url = $discuz_url."forum.php?mod=post&action=newthread&fid=64";

 

 

                $ch = curl_init($send_url);

                curl_setopt($ch, CURLOPT_HEADER, 0);

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

                curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

                $contents = curl_exec($ch);

                curl_close($ch);

 

                //这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性

                preg_match('/<input\s*type="hidden"\s*name="formhash"\s*id="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);

                if(!empty($matches)) {

                        $formhash = $matches[1];

                } else {

                        die('Not found the forumhash.');

                }

 

 

                $post_data = array();

                //帖子标题

                $post_data['subject'] = $val['title'];

                //帖子内容

                $post_data['message'] = $val['content'];

                $post_data['topicsubmit'] = "yes";

                $post_data['extra'] = '';

                //帖子标签

                $post_data['tags'] = $post_data['subject'];

                //帖子的hash码,这个非常关键!假如缺少这个hash码,discuz会警告你来路的页面不正确

                $post_data['formhash']=$formhash;

 

 

                $ch = curl_init($send_url);

                curl_setopt($ch, CURLOPT_REFERER, $send_url);       //伪装REFERER

                curl_setopt($ch, CURLOPT_HEADER, 0);

                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

                curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

                curl_setopt($ch, CURLOPT_POST, 1);

                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

                $contents = curl_exec($ch);

                curl_close($ch);

 

                //清理cookie文件

                unlink($cookie_file); 

 

?>

这篇关于discuz x2/x2.5模拟登陆、发帖、回帖php代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246258

相关文章

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点