`

php 使用curl模拟登录discuz以及模拟发帖

    博客分类:
  • PHP
阅读更多

<?php

$discuz_url = 'http://127.0.0.1/discuz/';//论坛地址

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

 

 

$post_fields = array();

//以下两项不需要修改

$post_fields['loginfield'] = 'username';

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

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

$post_fields['username'] = 'tianxin';

$post_fields['password'] = '111111';

//安全提问

$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('./temp','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."post.php?action=newthread&fid=2";

 

 

$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'] = 'test2';

//帖子内容

$post_data['message'] = 'test2';

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

$post_data['extra'] = '';

//帖子标签

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

//帖子的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);

 

?>

分享到:
评论

相关推荐

    php 模拟登录discuz2.0 论坛,发贴

    在这个特定的场景中,我们需要使用PHP来模拟登录Discuz! 2.0论坛系统,然后在成功登录后发布一个新的帖子。以下是一些关于这个过程的关键知识点: 1. **Discuz! 2.0论坛系统**:Discuz! 是一个流行的开源社区论坛...

    php中通过curl模拟登陆discuz论坛的实现代码

    php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码。 复制代码 代码如下: &lt;?php $discuz_url = ‘http://127.0.0.1/discuz/’;//论坛地址 $login_url = $...

    php通过curl模拟登陆DZ论坛

    下面是一个简化的PHP通过CURL模拟登录DZ论坛的示例步骤: 1. 设置论坛地址以及登录页面地址。 2. 准备POST数据,包括用户名、密码等。 3. 初始化CURL会话,并设置CURL选项,如请求方式为POST,发送POST字段。 4. ...

    php运行出现Call to undefined function curl_init()的解决方法

    在网上下载了一个模拟登陆discuz论坛的php程序范例,试运行时出现“Call to undefined function curl_init”这个错误提示,没有定义的函数,也就是php还没打开对curl_init函数的支持。Google了一番终于解决了,方法...

    基于PHP的众大一键采集今日头条Discuz插件php版v2.2源码.zip

    总的来说,这款基于PHP的众大一键采集今日头条的Discuz插件涉及到的知识点包括:PHP编程、Web Scraping技术、HTTP请求与响应处理、HTML和JSON数据解析、Discuz论坛API的使用,以及可能的反反爬虫策略。对于想要深入...

    PHP中curl_setopt函数用法实例分析

    在示例代码中,使用了curl_setopt函数来模拟一个wap登录和discuz论坛的wap登录。代码首先通过curl_init初始化一个cURL会话,然后逐一设置URL、POST请求、请求头、POST字段等选项。最后通过curl_exec执行这个cURL会话...

    curl实现站外采集的方法和技巧

    举一个curl模拟登录discuz论坛的例子,我们首先需要配置请求的URL、POST字段以及提交的数据。在这个过程中,需要根据目标网站的具体表单元素来构造正确的POST数据,并在请求中附上cookie来保持会话。 以上是使用...

    zabbix从入门到精通.zip

    02-curl模拟登陆discuz论坛 03-curl模拟登陆zabbix web界面 04-zabbix web场景监控 05-监控维度讲解 06-percona插件监控mysql 07-snmp监控windows和linux 08-zabbix自动化监控之自动发现和自动注册 09-zabbix主动...

    基于PHP的DZ php论坛万能爬虫程序.zip

    【标题】"基于PHP的DZ php论坛万能爬虫程序.zip" 提供的是一个用PHP编写的专门针对DZ(Discuz!)论坛的通用爬虫程序。DZ论坛是中国较受欢迎的开源社区论坛软件,它使用PHP和MySQL数据库构建,具有丰富的功能和高度的...

    Zabbix监控培训视频.rar

    │ 27 01-使用curl模拟登陆zabbix-web页面.mp4 │ 28 02-zabbix创建web场景监控.mp4 │ 29 03-创建web检查触发器.mp4 │ 30 04-使用percona插件监控mysql.mp4 │ 31 05-使用snmp监控linux系统.mp4 │ 32 06-使用自动...

    DZ论坛万能小偷程序 v1.0

    这一过程涉及到网络请求、HTML解析、DOM操作等技术,其中可能需要用到如cURL库来处理HTTP请求,以及PHP的DOM或SimpleXML扩展来解析HTML内容。 在使用数据采集程序时,需要注意合法性和道德问题。确保你的行为符合...

Global site tag (gtag.js) - Google Analytics