PERL - 提交包含令牌值的表单

时间:2016-12-12 16:13:28

标签: perl user-agent lwp

该页面具有以下输入形式

  <form name="action" method="post" action="index.php">
    <input type="text" name="username" />
    <input type="password" name="password" />
    <input type="hidden" name="token" value="40f41b52643f1fdc" />
  </form>

输入类型=“隐藏”字段由服务器填充。我想使用Perl提交此表单。到目前为止,我有以下Perl代码

use LWP;
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;

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

my @req=('http://somesite.com/index.php', [action => 1,  token => ????, username => "john", password => "123456"]);
my $response = $ua->post(@req);

print  $response1->as_string(); 

但是如何从<input type="hidden" name="token" value="40f41b52643f1fdc" />获取值然后提交呢?

1 个答案:

答案 0 :(得分:0)

  1. 请求获取包含表单的页面
  2. 使用HTML :: TreeBuilder
  3. 等工具解析响应中的HTML
  4. 使用令牌
  5. 搜索输入
  6. 将其复制到字符串
  7. 使用您现在拥有的代码。
  8. 注意:令牌可能是针对CSRF攻击的保护,因此您还需要保存原始响应中的Cookie并在后续响应中使用它们。

    或者,使用WWW :: Mechanize或Selenium等工具,通过虚拟点击提交按钮提交表单,而不是手动构建请求。