您好,欢迎访问一九零五行业门户网

php通过curl模拟登陆DZ论坛

本文章来给各位同学介绍一下关于php curl模拟登陆论坛并采集数据实例,如果你对利用curl模拟登录功能有兴趣可进入参考。
libcurl同时也支持https认证、http post、http put、 ftp 上传(这个也能通过php的ftp扩展完成)、http 基于表单的上传、代理、cookies和用户名+密码的认证。
/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('//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); ?>
以上所述就是本文的全部内容了,,希望大家能够喜欢。
其它类似信息

推荐信息