`

php curl模拟登陆discuz论坛的代码

阅读更多

PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、 gopher、telnet、dict、file和ldap协议。

libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码。

本文原文地址为:php curl模拟登录discuz并模拟发帖

例子:

<?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 curl的文章,请参考:

curl获取网站的http的状态码
PHP添加CURL扩展库的二种方法
linux curl监控网页的shell脚本
php CURL模拟cookie登录的代码
PHP CURL获取cookies模拟登录的方法介绍
php curl上传文件
php curl应用实例
PHP中用CURL伪造IP来源的方法
php curl判断远程文件是否存在
php curl伪造IP来源
php curl 学习总结

 

分享到:
评论

相关推荐

    curl模拟登陆源码

    PHPcurl模拟登陆教务系统源码,这里以武汉理工大学教务系统为例,可以自己在此基础上研究其他教务系统。

    curl 模拟登陆

    php curl 模块模拟登陆

    通过CURL命令实现模拟登陆

    使用CURL进行模拟登陆,在一些自动化场景中,相关脚本部署在Linux上,并且是命令行的操作方式,模拟页面的操作基本无法实现,本例使用curl模拟http请求,实现浏览器操作

    PHP100视频教程88:PHP.之.CURL模拟登陆并获取数据.rar

    【PHP与CURL模拟登录及数据获取】 在Web开发中,有时我们需要模拟用户登录到某个网站,以便自动化处理一些任务或获取受保护的数据。在这个PHP100视频教程88中,我们将深入学习如何利用PHP的cURL库来实现这个功能。...

    php利用curl模拟登录

    该资源通过具体实例模拟页面登录。curl使用基本过程:第一步:使用curl_init()进行初始化,第二步:使用curl_setopt()函数进行设置选项,第三步:使用curl_exec&#40;$curl&#41;进行执行事务,第四步:curl_close()...

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

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

    curl模拟登陆rsa加密事例

    本案例聚焦于如何使用PHP与curl库来模拟登录过程,其中涉及到RSA加密技术。以下是关于RSA加密、PHP编程以及curl库的详细解释。 RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由三位科学家命名。它使用一对...

    PHPcurl模拟IP浏览器请求

    在IT行业中,PHP和cURL库常常被用来创建网络爬虫、API接口调用以及其他需要模拟HTTP请求的场景。PHPcurl模拟IP浏览器请求是通过PHP的cURL扩展来实现的,它允许开发者发送HTTP请求,并自定义各种请求头,包括伪装成...

    php curl模仿form表单提交图片或文件

    总结,通过PHP的cURL和ThinkPHP5,我们可以轻松地模拟form表单提交,包括图片和文件。理解cURL的工作原理以及如何在TP5中使用它,对于进行复杂的HTTP交互是非常有用的。请确保在实际应用中遵守相关的安全规范,如...

    php curl 自动微博登陆

    下面是一个简单的PHP代码示例,演示了如何使用cURL进行自动微博登录: ```php &lt;?php $ch = curl_init(); // 初始化cURL会话 // 获取登录页面的cookie curl_setopt($ch, CURLOPT_URL, '...

    PHP CURL 新浪好友邀请邮箱登录

    在IT行业中,PHP和cURL库常常被用来处理网络请求,比如模拟用户登录、数据抓取等。在这个“PHP CURL 新浪好友邀请邮箱登录”的项目中,我们将探讨如何利用PHP和cURL技术来实现新浪邮箱登录,并进行好友邀请操作。 ...

    php中curl模拟并发经典多线程

    这是一个经典的curl模拟多线程操作,缺点是总耗费时间取决于最慢的一个响应,网上有很多,只是用代码实现了一下,这是一个获取搜狗rank的示例

    PHP基于curl模拟post提交json数据示例.docx

    PHP 基于 curl 模拟 post 提交 json 数据示例 本文主要介绍了 PHP 基于 curl 模拟 post 提交 json 数据操作,通过实例形式分析了 PHP 使用 curl 实现 post 方式提交 json 数据相关操作步骤与留意事项。下面是文章的...

    PHP - cURL实现短信验证码注册登录完整示例:PHP - cURL.php和附件说明

    在IT行业中,PHP和cURL库常常被用来处理网络请求,特别是进行API交互,例如发送短信验证码进行用户注册和登录验证。在这个示例中,我们将深入理解如何利用PHP结合cURL来实现这一功能。 首先,我们需要了解cURL,它...

    PHP基于curl模拟post提交json数据示例

    主要介绍了PHP基于curl模拟post提交json数据操作,结合实例形式分析了php使用curl实现post方式提交json数据相关操作步骤与注意事项,代码简单实用,需要的朋友可以参考下

    php通过curl模拟登陆DZ论坛

    在如今的网络世界中,模拟登陆论坛并进行数据采集是一项相当实用的技术。本文将详细解读如何使用PHP语言配合libcurl库通过CURL函数模拟登陆DZ(Discuz!)论坛,并且进行数据的采集。 首先,我们需要了解CURL是一个...

    php下使用curl模拟用户登陆的代码

    在PHP中,`cURL`库是一个强大的工具,用于处理HTTP和其他协议的请求。它可以用于模拟用户登录,抓取网页内容,甚至进行文件上传等...正确设置这些选项,结合登录表单的数据,`cURL`可以在PHP中有效地模拟用户登录过程。

    php curl模拟浏览器操作 get/post,

    这个curl文件提供vget,vpost,vlogin,可以模拟http&https等绝大部分的请求,功能强大

    phpCurl请求工具,可模拟表单、上传文件

    通用的http请求工具,可以模拟表单提交、上传文件、发送请求、获取网页内容

Global site tag (gtag.js) - Google Analytics