最近为了学习,做一个小小BBS灌水回贴器,登录没问题,可就是对get来的贴无法回复,post后返回来的结果是:抱歉,您的请求来路不正确或表单验证串不符,无法提交
网站是PHP Discuz! X2
代码如下:
 IdHttp1.AllowCookies:=True;
    IdHttp1.HandleRedirects:=True;
    IdHTTP1.HTTPOptions:=IdHTTP1.HTTPOptions+[hoKeepOrigProtocol];
    //IdHttp1.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-xpsdocument, */*';
    IdHttp1.Request.AcceptLanguage := 'zh-cn';
    IdHttp1.Request.AcceptEncoding := 'gzip,deflate';
    IdHttp1.Request.ContentLength := 98;
    IdHttp1.Request.ContentType:='application/x-www-form-urlencoded' ;
    IdHttp1.Request.Connection := 'Keep-Alive';
    IdHttp1.Request.CacheControl := 'no-cache';
    IdHttp1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)';
    IdHttp1.Host := 'bbs.hfdiaoyu.com';    IdHttp1.Request.CustomHeaders.Text:='Cookie:'+mycookie;            
    IdHttp1.Request.Referer := 'http://XXX/thread-19180-1-1.html';
    IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
    poslist.Add('posttime=');
    poslist.Add('formhash=469b4851');
    poslist.Add('subject=');    poslist.Add('message=' + Edit2.Text);
    restr := IdHttp1.Post('http://XXX/forum.php?mod=post&action=reply&fid=12&tid=19180&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost',poslist);

解决方案 »

  1.   

    浏览单个贴中的form内容是<form method="post" autocomplete="off" id="fastpostform" action="forum.php?mod=post&amp;action=reply&amp;fid=12&amp;tid=19180&amp;extra=page%3D1&amp;replysubmit=yes&amp;infloat=yes&amp;handlekey=fastpost" onSubmit="return fastpostvalidate(this)">
    <table cellspacing="0" cellpadding="0">
    <tr>
    <td class="pls">
    <div class="avatar"><img src="/uc_server/data/avatar/000/00/01/97_avatar_middle.jpg" onerror="this.onerror=null;this.src='http://bbs.xxxx.com/uc_server/images/noavatar_middle.gif'" /></div></td>
    <td class="plc">
    <script type="text/javascript" src="source/plugin/soso_smilies/js/soso_smilies.js?L5G" charset="utf-8"></script><script type="text/javascript" charset="utf-8">SOSO_EXP_CHECK("fastpost");</script>
    <span id="fastpostreturn"></span>
    <div class="cl">
    <div id="fastsmiliesdiv" class="y"><div id="fastsmiliesdiv_data"><div id="fastsmilies"></div></div></div><div class="hasfsl" id="fastposteditor">
    <div class="tedt mtn">
    <div class="bar">
    <span class="y">
    <a href="forum.php?mod=post&amp;action=reply&amp;fid=12&amp;tid=19180" onclick="return switchAdvanceMode(this.href)">高级模式</a>
    </span><script src="static/js/seditor.js?L5G" type="text/javascript"></script>
    <div class="fpd">
    <a href="javascript:;" title="文字加粗" class="fbld" onclick="seditor_insertunit('fastpost', '', '');doane(event);">B</a>
    <a href="javascript:;" title="设置文字颜色" class="fclr" id="fastpostforecolor" onclick="showColorBox(this.id, 2, 'fastpost');doane(event);">Color</a>
    <a id="fastpostimg" href="javascript:;" title="图片" class="fmg" onclick="seditor_menu('fastpost', 'img');doane(event);">Image</a>
    <a id="fastposturl" href="javascript:;" title="添加链接" class="flnk" onclick="seditor_menu('fastpost', 'url');doane(event);">Link</a>
    <a id="fastpostquote" href="javascript:;" title="引用" class="fqt" onclick="seditor_menu('fastpost', 'quote');doane(event);">Quote</a>
    <a id="fastpostcode" href="javascript:;" title="代码" class="fcd" onclick="seditor_menu('fastpost', 'code');doane(event);">Code</a>
    <a href="javascript:;" class="fsml" id="fastpostsml" onclick="showMenu({'ctrlid':this.id,'evt':'click','layer':2});return false;">Smilies</a>
    <script type="text/javascript" reload="1">smilies_show('fastpostsmiliesdiv', 8, 'fastpost');</script>
    <span class="pipe z">|</span><span onclick="fastUload()" class="cur1 z">添加附件</span></div></div>
    <div class="area">
    <textarea rows="6" cols="80" name="message" id="fastpostmessage" onKeyDown="seditor_ctlent(event, 'fastpostvalidate($(\'fastpostform\'))');" tabindex="4" class="pt"></textarea>
    </div>
    </div>
    </div>
    </div>
    <script type="text/javascript">
    var editorid = '';
    var ATTACHNUM = {'imageused':0,'imageunused':0,'attachused':0,'attachunused':0}, ATTACHUNUSEDAID = new Array(), IMGUNUSEDAID = new Array();
    </script><input type="hidden" name="posttime" id="posttime" value="1357438812" />
    <div class="upfl hasfsl">
    <table cellpadding="0" cellspacing="0" border="0" id="attach_tblheader" style="display: none;">
    <tr>
    <td>点击附件文件名添加到帖子内容中</td>
    <td class="atds">描述</td>
    <td class="attc"></td>
    </tr>
    </table>
    <div id="attachlist"></div>
    </div><input type="hidden" name="formhash" value="469b4851" />
    <input type="hidden" name="subject" value="" />
    <p class="ptm pnpost">
    <button type="submit" name="replysubmit" id="fastpostsubmit" class="pn pnc vm" value="replysubmit" tabindex="5"><strong>发表回复</strong></button>
    <label for="fastpostrefresh"><input id="fastpostrefresh" type="checkbox" class="pc" />回帖后跳转到最后一页</label>
    <script type="text/javascript">if(getcookie('fastpostrefresh') == 1) {$('fastpostrefresh').checked=true;}</script>
    </p>
    </td>
    </tr>
    </table>
    </form>
      

  2.   

    哎 CSDN真的没以前的CSDN了~~~有点失望之
      

  3.   

    你Post的值是不是正确的?有的网站会检测机器人的
      

  4.   

    来路不正确的原因就是idhttp的头不被服务器接受,先用webbroswer获得到cookie,然后idhttp构造头
    当然,用webbroswer来做要简单一些
      

  5.   

    用浏览器操作,抓包分析一下referer的变化
      

  6.   

    一般是cookies问题。