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 学习总结
相关推荐
PHPcurl模拟登陆教务系统源码,这里以武汉理工大学教务系统为例,可以自己在此基础上研究其他教务系统。
php curl 模块模拟登陆
使用CURL进行模拟登陆,在一些自动化场景中,相关脚本部署在Linux上,并且是命令行的操作方式,模拟页面的操作基本无法实现,本例使用curl模拟http请求,实现浏览器操作
【PHP与CURL模拟登录及数据获取】 在Web开发中,有时我们需要模拟用户登录到某个网站,以便自动化处理一些任务或获取受保护的数据。在这个PHP100视频教程88中,我们将深入学习如何利用PHP的cURL库来实现这个功能。...
该资源通过具体实例模拟页面登录。curl使用基本过程:第一步:使用curl_init()进行初始化,第二步:使用curl_setopt()函数进行设置选项,第三步:使用curl_exec($curl)进行执行事务,第四步:curl_close()...
php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码。 复制代码 代码如下: <?php $discuz_url = ‘http://127.0.0.1/discuz/’;//论坛地址 $login_url = $...
本案例聚焦于如何使用PHP与curl库来模拟登录过程,其中涉及到RSA加密技术。以下是关于RSA加密、PHP编程以及curl库的详细解释。 RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由三位科学家命名。它使用一对...
在IT行业中,PHP和cURL库常常被用来创建网络爬虫、API接口调用以及其他需要模拟HTTP请求的场景。PHPcurl模拟IP浏览器请求是通过PHP的cURL扩展来实现的,它允许开发者发送HTTP请求,并自定义各种请求头,包括伪装成...
总结,通过PHP的cURL和ThinkPHP5,我们可以轻松地模拟form表单提交,包括图片和文件。理解cURL的工作原理以及如何在TP5中使用它,对于进行复杂的HTTP交互是非常有用的。请确保在实际应用中遵守相关的安全规范,如...
下面是一个简单的PHP代码示例,演示了如何使用cURL进行自动微博登录: ```php <?php $ch = curl_init(); // 初始化cURL会话 // 获取登录页面的cookie curl_setopt($ch, CURLOPT_URL, '...
在IT行业中,PHP和cURL库常常被用来处理网络请求,比如模拟用户登录、数据抓取等。在这个“PHP CURL 新浪好友邀请邮箱登录”的项目中,我们将探讨如何利用PHP和cURL技术来实现新浪邮箱登录,并进行好友邀请操作。 ...
这是一个经典的curl模拟多线程操作,缺点是总耗费时间取决于最慢的一个响应,网上有很多,只是用代码实现了一下,这是一个获取搜狗rank的示例
PHP 基于 curl 模拟 post 提交 json 数据示例 本文主要介绍了 PHP 基于 curl 模拟 post 提交 json 数据操作,通过实例形式分析了 PHP 使用 curl 实现 post 方式提交 json 数据相关操作步骤与留意事项。下面是文章的...
在IT行业中,PHP和cURL库常常被用来处理网络请求,特别是进行API交互,例如发送短信验证码进行用户注册和登录验证。在这个示例中,我们将深入理解如何利用PHP结合cURL来实现这一功能。 首先,我们需要了解cURL,它...
主要介绍了PHP基于curl模拟post提交json数据操作,结合实例形式分析了php使用curl实现post方式提交json数据相关操作步骤与注意事项,代码简单实用,需要的朋友可以参考下
在如今的网络世界中,模拟登陆论坛并进行数据采集是一项相当实用的技术。本文将详细解读如何使用PHP语言配合libcurl库通过CURL函数模拟登陆DZ(Discuz!)论坛,并且进行数据的采集。 首先,我们需要了解CURL是一个...
在PHP中,`cURL`库是一个强大的工具,用于处理HTTP和其他协议的请求。它可以用于模拟用户登录,抓取网页内容,甚至进行文件上传等...正确设置这些选项,结合登录表单的数据,`cURL`可以在PHP中有效地模拟用户登录过程。
这个curl文件提供vget,vpost,vlogin,可以模拟http&https等绝大部分的请求,功能强大
通用的http请求工具,可以模拟表单提交、上传文件、发送请求、获取网页内容