LWP::UserAgent 中post提交数据后

LWP::UserAgent 中post提交数据后

LWP::UserAgent 中post提交数据后

use LWP::UserAgent;
$ua = LWP::UserAgent->new;

$url='http://www.some.com/login.asp';
#$response = $ua->get($url);
$response = $ua->post
( "$url",[ 'UserName' => 'shampoo',
'Password' => 'shampoo',
]
);

print $response->content ;

显示:你提交的路径有误,禁止从站点外部提交数据。
这样提交有什么问题么?
是不是这个网站就不能这样提交了啊?
有什么方法可以提交么
网站的refer,填写一下http.
网站的refer,填写一下http_header的数据,应该是里面的referer的值.估计是网站检测了这个.
如果网站是通过其他手段检测的,你就要相应修改,看一下正常的你的IE提交的数据,比对一下就可以发现了.
use strict; --use warn.
use strict;
use warnings;
use LWP;
my $username="shampoo";
my $password="shampoo";
my $response;
my $url;
my $browser = LWP::UserAgent->new(agent => 'Mozilla/4.76 [us] (Win98; U)');
$browser->cookie_jar({});

$url = 'http://bbs.XXX.com/Login.asp';
$response = $browser->get( $url ,);
die "错误! Can't get $url -- ", $response->status_line unless $response->is_success;
print $response->headers_as_string;

$url = 'http://bbs.XXX.com/Login.asp';
$response = $browser->post( $url,
['UserName' => $username,
'password' => $password,
'Referer' => 'http://bbs.XXX.com/Login.asp',);
die "错误! Can't get $url -- ", $response->status_line unless $response->is_success;
print "\n";
print $response->content;

改成上面的样子后出现了 302 Object moved
网上说什么重定向,还看到cookie的设置的问题
不解,请多多指教, 谢谢
post 的话你要把 post 重定向打开。

[quote]LWP::User Agent? 支持 4 种 HTTP 地址重定向,http status code 分别是:301 Moved Permanently, 302 Found, 303 See Other, 307 Temporary Redirect

注:在以上的HTTP 地址重定向基础上,LWP 缺省支持 ‘Head’ 和 ‘Get’ 方法的地址重定向跟踪。如果你想跟踪 ‘POST’ 的地址重定向,需要以下声明 ($ua 是 LWP::User Agent? 的一个对象)。这主要用于使用 Post 方法提交表格后的地址重定向。

push @{ $ua->requests_redirectable }, 'POST';[/quote]

具体看看我翻译的那篇 lwp 文章的最下面
http://wiki.perlchina.org/main/show/LWP%E4%B8%8EWEB%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8
可以了,谢谢各位的帮助
use strict;
use warnings;
use LWP;
my $username="shampoo";
my $password="shampoo";
my $response;
my $url;
my $browser = LWP::UserAgent->new(agent => 'Mozilla/4.76 [us] (Win98; U)');
$browser->cookie_jar({});

$url = 'http://bbs.XXX.com/Login.asp';
$response = $browser->get( $url ,);
die "错误! Can't get $url -- ", $response->status_line unless $response->is_success;
print $response->headers_as_string;
[color=red]push @{ $ua->requests_redirectable }, 'POST';[/color]
$url = 'http://bbs.XXX.com/Login.asp';
$response = $browser->post( $url,
['UserName' => $username,
'password' => $password,
'Referer' => 'http://bbs.XXX.com/Login.asp',);
die "错误! Can't get $url -- ", $response->status_line unless $response->is_success;
print "\n";
print $response->content;