用perl和web交互?

恩,我照那种写法,没有成功。。
关键是你首先要找出来哪些数据是你需要post过去的。
我这个代码里面使用了两种方法,登陆的时候是老老实实的填充了form然后post的。后面备份数据库那里,稍微偷懒了一点,我没有填充form,而是使用抓包工具捕获了数据包,然后作为Content直接提交的。

建议你像我登陆部分那样,分析字段,填充,提交,必要的时候保存cookie。
您的blog上不去了。。
以下是我测试的几个方法,均未成功...前辈们帮看看哪里错了
#! /usr/bin/perl -w
use LWP::Simple;
use URI::URL;
use HTML::Parser;
use Net::SMTP;
$url = url("http://bbs.chinaunix.net/logging.php?action=login");
$url->query_form("formhash" => "eb595b8d", "styleid" => "1", "cookietime" => "0",  "loginfield" => "username", "questionid" => "0", "username" => "username", "password" => "password"); # more params if needed
$page = get($url);
open CP, ">new.html";
print CP $page;
#! /usr/bin/perl -w

  use LWP::UserAgent;

  $ua = LWP::UserAgent->new;

  $ua->agent("MyApp/0.1");

  my $req = HTTP::Request->new(POST => 'http://bbs.chinaunix.net/logging.php?action=login');
  #$req->content_type('application/x-www-form-urlencoded');
$req->content('formhash=eb595b8d&styleid=1&cookietime=0&loginfield=username&questionid=0&username=username&password=password');
  my $res = $ua->request($req);

  if ($res->is_success) {
   open CP, ">new.html";
  print CP $res->content;
  }
  else {
      print $res->status_line, "\n";
  }
#! /usr/bin/perl -w

  use LWP::UserAgent;

my $browser = LWP::UserAgent->new;

my $url = 'http://bbs.chinaunix.net/logging.php?action=login';

my $response = $browser->post( $url,
    {
        "formhash" => "eb595b8d",
         "styleid" => "1",
         "cookietime" => "0",
          "loginfield" => "username",
          "questionid" => "0",
          "username" => "username",
          "password" => "password",
       }
);
  if ($response->is_success) {
   open CP, ">new.html";
  print CP $response->content;
  }
  else {
      print $response->status_line, "\n";
  }
我的blog是好的呀,可以访问,或许那时候出问题了吧。
今天刚好有空来BBS,发现你还没搞定,就写了个简单的脚本。为了方便你阅读代码,我使用了提交表单的方式,没有采用抓包直接post数据。

你需要注意的是,formhash字段是动态生成的,你需要在登陆前动态获取一下。登陆失败时,请尽量多填充字段,也许你认为不重要的,但是服务端却检查了。

[Copy to clipboard] [ - ]
CODE:
#!/use/bin/perl

use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;

my $login_url = 'http://bbs.chinaunix.net/logging.php?action=login&';
my $form_hash;

my $user = "撒哈拉里的鱼";
my $pass = 'fake_password';

&GetFormHash( );
&LoginCU( );

sub GetFormHash( )
{
        my $url = 'http://bbs.chinaunix.net/logging.php?action=login';
        my $content = get $url || die "Get form hash error: $!\n";
       
        if( $content =~ /name=\"formhash\" value=\"(.*?)\">/ )
        {
                $form_hash = $1;
                print "get form hash ok: $1\n";
        }
}

sub LoginCU( )
{       
        my $ie = LWP::UserAgent->new( );
        $ie->cookie_jar( {} );
       
        my $response = $ie->post( $login_url, [ 'formhash' => $form_hash,
                                                                                        'referer' => $login_url,
                                                                                        'username' => $user,
                                                                                        'password' => $pass,
                                                                                        'questionid' => 0,
                                                                                        'answer' => '',
                                                                                        'cookietime' => 315360000,
                                                                                        'loginmode' => '',
                                                                                        'styleid' => 1,
                                                                                        'loginsubmit' => "提   交" ] );
        if ( not $response->is_success )
        {
                die "login error: ", $response->status_line. "\n";
        }
            
        if( $response->content =~ /$user/ )
        {
                print "login successful!\n";
        }
        else
        {
                die "login error!";
        }
}

thx for your help.
下午逃课。。。功夫不负有心人,成功了。万分的感谢你~
这里真是太好了,对于我这样的菜鸟,真是有种说不出的兴奋。
还想请教下,如果我正常登录了一个网站,然后对于以后的操作都要post过去cookie是把,这里具体的做法还是没有弄明白,最好给个简单事例,谢谢++