免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 22740 | 回复: 8
打印 上一主题 下一主题

Discuz发帖机PHP版 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-04-06 10:30:51
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-21 23:40 |只看该作者 |倒序浏览
写这个的目的不是为了漫天去发广告,所以没考虑验证码和验证问答。

<?
error_reporting("7");
$url = "http://www.*********.com/logging.php";
$headers = get_headers($url);
preg_match("/Set-Cookie: (.+?);/", $headers[6], $harr);
$cookie = $harr[1];
$data = array(
                'action'=>'login',
                'loginsubmit'=>'yes',
                'username'=>'*********',
                'password'=>'*********',
                'cookietime'=>'2592000'
                );
$data = http_build_query($data);
$opts = array(
                'http'=>array(
                        'method'=>'POST',
                        'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
                        "$cookie\r\n"."Content-Length:".strlen($data)."\r\n",
                        'content'=>$data
                        )
                );
$context = stream_context_create($opts);

$fp = fopen($url, 'r', false, $context);
while(!feof($fp)){
        $html .= fgets($fp);
}
preg_match("/formhash=(.{8})\"\>/", $html, $array);
$formhash = $array['1'];
echo "cookie:$cookie\nformhash:$formhash\n";
?>


上面是登录部分,取得cookie和formhash。

需要注意的是formhash,这个东西是会变的,唯一一个肯定会受到影响的因素就是时间,如果其他因素(用户名,UID,密码,AUTHKEY,等等)都不变的话, formhash会每隔100000000秒改变一次(1157天)。


发帖部分还没有写。

[ 本帖最后由 SeriousCool 于 2009-8-21 23:45 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2009-08-22 10:36 |只看该作者
不错,好好学习。

我以前有一个版本发过,但是怕人乱用,隐藏了代码。

目前手头的这个版本,呵呵,采发回短消息都支持。

论坛徽章:
0
3 [报告]
发表于 2009-08-22 12:55 |只看该作者
验证码 是关键。

论坛徽章:
0
4 [报告]
发表于 2009-08-24 21:41 |只看该作者
原帖由 HonestQiao 于 2009-8-22 10:36 发表
不错,好好学习。

我以前有一个版本发过,但是怕人乱用,隐藏了代码。

目前手头的这个版本,呵呵,采发回短消息都支持。


验证码问题是如何解决的?

论坛徽章:
0
5 [报告]
发表于 2009-08-25 01:40 |只看该作者
验证码问题目前都是取色吧

论坛徽章:
0
6 [报告]
发表于 2009-08-25 14:33 |只看该作者
以前用curl写过一个,也是想不到好的解决验证码的问题

论坛徽章:
1
摩羯座
日期:2014-04-06 10:30:51
7 [报告]
发表于 2010-04-07 09:45 |只看该作者
本帖最后由 SeriousCool 于 2012-12-24 16:01 编辑

突然发现加精了,把所有代码都帖出来吧,不然太对不起观众了。
本人不是专业的程序员,偶尔写些小程序玩玩,代码很不规范,见笑了。
原文地址:

  1. <?
  2. // 登录
  3. function dz_login($url_login, $username, $password){
  4.         $argv_login = array(
  5.                         'action'=>'login',
  6.                         'loginsubmit'=>'yes',
  7.                         'username'=>$username,
  8.                         'password'=>$password,
  9.                         'cookietime'=>'2592000'
  10.                         );

  11.         $ch_login = curl_init();
  12.         curl_setopt($ch_login, CURLOPT_URL, $url_login);
  13.         curl_setopt($ch_login, CURLOPT_RETURNTRANSFER, TRUE);
  14.         curl_setopt($ch_login, CURLOPT_POST, TRUE);
  15.         curl_setopt($ch_login, CURLOPT_POSTFIELDS, $argv_login);
  16.         curl_setopt($ch_login, CURLOPT_HEADER, TRUE);

  17.         $html_login = curl_exec($ch_login);
  18.         if($html_login === FALSE){
  19.                 $error_login = curl_error($ch_login);
  20.         }

  21.         preg_match("/Set-Cookie: (.+?);/", $html_login, $harr);
  22.         $cookie = $harr[1];

  23.         return $cookie;
  24. }

  25. // 获得formhash
  26. function getformhash($cookie){
  27.         global $message, $fid, $tid;
  28.         $html_formhash = post_reply($message, $fid, $tid);
  29.         preg_match("/formhash=(.{8})\"\>/", $html_formhash, $array);
  30.         $formhash = $array['1'];
  31.         return $formhash;
  32. }

  33. // 发主题
  34. function post_subject($subject, $message, $fid){
  35.         global $cookie, $url_post, $formhash;
  36.         $argv_post_reply = array(
  37.                 'action'=>'newthread',
  38.                 'fid'=>$fid,
  39.                 'formhash'=>$formhash,
  40.                 'subject'=>$subject,
  41.                 'typeid'=>'1',
  42.                 'message'=>$message,
  43.                 'topicsubmit'=>'yes',
  44.                 'usesig'=>'1'
  45.         );

  46.         $ch_post_reply = curl_init();
  47.         curl_setopt($ch_post_reply, CURLOPT_URL, $url_post);
  48.         curl_setopt($ch_post_reply, CURLOPT_RETURNTRANSFER, TRUE);
  49.         curl_setopt($ch_post_reply, CURLOPT_POST, TRUE);
  50.         curl_setopt($ch_post_reply, CURLOPT_POSTFIELDS, $argv_post_reply);
  51.         curl_setopt($ch_post_reply, CURLOPT_HEADER, TRUE);
  52.         curl_setopt($ch_post_reply, CURLOPT_COOKIE, $cookie);
  53.         curl_setopt($ch_post_reply, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  54.         $html_reply = curl_exec($ch_post_reply);
  55.                 if($html_reply === FALSE){
  56.                 $error_reply = curl_errno($ch_post_reply)
  57.                         .curl_error($ch_post_reply);
  58.                 return $error_reply;
  59.         }else{
  60.                 return $html_reply;
  61.         }
  62. }

  63. // 发回复
  64. function post_reply($message, $fid, $tid){
  65.         global $cookie, $url_post, $formhash;
  66.         $argv_post_reply = array(
  67.                 'action'=>'reply',
  68.                 'fid'=>$fid,
  69.                 'tid'=>$tid,
  70.                 'formhash'=>$formhash,
  71.                 'message'=>$message,
  72.                 'replysubmit'=>'yes',
  73.                 'usesig'=>'1'
  74.         );

  75.         $ch_post_reply = curl_init();
  76.         curl_setopt($ch_post_reply, CURLOPT_URL, $url_post);
  77.         curl_setopt($ch_post_reply, CURLOPT_RETURNTRANSFER, TRUE);
  78.         curl_setopt($ch_post_reply, CURLOPT_POST, TRUE);
  79.         curl_setopt($ch_post_reply, CURLOPT_POSTFIELDS, $argv_post_reply);
  80.         curl_setopt($ch_post_reply, CURLOPT_HEADER, TRUE);
  81.         curl_setopt($ch_post_reply, CURLOPT_COOKIE, $cookie);
  82.         curl_setopt($ch_post_reply, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  83.         $html_reply = curl_exec($ch_post_reply);

  84.         if($html_reply === FALSE){
  85.                 $error_reply = curl_errno($ch_post_reply)
  86.                         .curl_error($ch_post_reply);
  87.                 return $error_reply;
  88.         }else{
  89.                 return $html_reply;
  90.         }
  91. }
  92. ?>
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-04-09 12:46 |只看该作者
验证码 是关键。
benjiam 发表于 2009-08-22 12:55



验证码测试是没问题,但是效率不高,而且不是100%有效,特别是复杂的验证码
http://www.zhaiduo.com/captcha/

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
9 [报告]
发表于 2014-06-28 12:39 来自手机 |只看该作者
恩学习一下实用的功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP