lwp 自动 Discuz 发帖问题

lwp 自动 Discuz 发帖问题

用lwp发帖子

提示

QUOTE:
您的请求来路不正确或验证字串不符,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。

抓包发现,我用lwp发出去的包跟FireFox不一样


FireFox发出的数据中 Post的变量有很多“0x2d2d”
是在不明白这个东西哪里来的
另外FireFox发出的数据中找到一个变量boundary。
这个变量并没有在表单中出现。
请问这个东西是哪里来的
登录和获取cookies,并使用获取的cookies进行浏览是没有问题的

只有post的时候出问题
以下是post部分


#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Cookies;

# Create a Cookies object

$cookie=HTTP::Cookies->new(
                file => '/home/net_robber/tmp/cookie.txt',
                autosave => 1
                );

# Create a user agent object

$ua = LWP::UserAgent->new;
$ua->agent("TimeCtrl.net Random Browse");
$ua->from('net_robber@TimeCtrl.net');
$ua->cookie_jar( $cookie );
$ua->timeout(30);

# Post Data

# Create a Post request

$req = HTTP::Request->new(GET => 'http://www.ghlm315.com/bbs/post.php?action=newthread&fid=12');
$res = $ua->request($req);
$formhash='';
if (!$res->is_success)
{
        print $res->status_line, "\n";
        exit 1;
}
else
{
        if ($res->content =~ /formhash.+value="(.+)"/)
        {
                $formhash = $1;
        }
}
print "get formhash = $formhash\n";

$req = HTTP::Request->new(POST => 'http://www.ghlm315.com/bbs/post.php?action=newthread&fid=12&topicsubmit=yes&extra=page%3D1');
%form=  (
                'formhash'      =>      $formhash,
                'frombbs'       =>      '1',
                'subject'       =>      'net_robber test',
                'parseurloff'   =>      '1',
                'smileyoff'     =>      '1',
                'bbcodeoff'     =>      '1',
                'emailnotify'   =>      '1',
                'message'       =>      '测试信息',
                'attach[]'      =>      '',
                'localid[]'     =>      '',
                'attachperm[]'  =>      '',
                'attachprice[]' =>      '',
                'wysiwyg'       =>      '1',
                'price'         =>      '0',
                'readperm'      =>      '0',
                'typeid'        =>      '0',
                'iconid'        =>      '0',
                'usesig'        =>      '1'
                #''     =>      '',

        );


$req->content_type('multipart/form-data');
$content='';
while ( ($k, $v) = each %form )
{
        $content .= "$k=$v&";
}
$content = ($content =~ /^(.+)&$/)[0];
$req->content($content);

$res = $ua->request($req);


# Check the outcome of the response

if (!$res->is_success)
{
        print "NOT success:\n";
        print $res->status_line, "\n";
}
else
{
        print $res->content;
}


学习一下。想用perl完成一个这样的功能,但是正在为完成这个工作,而学习perl。
我一般不会自己去构造请求,我会让 LWP 和 HTML::* 去帮我构造。
Sorry,这个问题已经解决了,

当初出问题是因为Post表单的时候,多Post了一个字段,然后就被Discuz校验不通过了
不好意思 我也剛遇到這個問題
求教解決方法
謝謝