Html 使用perl LWP库传递表单数据时遇到问题

Html 使用perl LWP库传递表单数据时遇到问题,html,forms,perl,lwp,Html,Forms,Perl,Lwp,我正在尝试使用perl自动登录网站,然后让它单击链接从我的帐户中获取特定数据。详情如下: 进入www.bwsc.org,让其填写账户信息(账号和电表号) 提交将带我进入基本帐户页面的表单 按照此页面上的链接之一获取特定帐户信息 我在第一步就被卡住了。也许我在这方面做得不对,但我想我可以使用perl LWP库来访问表单数据并填写信息。作为第一步,我查看了www.bwsc.org上的相关源html以获取表单信息: <div id="logonbox_SB">

我正在尝试使用perl自动登录网站,然后让它单击链接从我的帐户中获取特定数据。详情如下:

  • 进入www.bwsc.org,让其填写账户信息(账号和电表号)
  • 提交将带我进入基本帐户页面的表单
  • 按照此页面上的链接之一获取特定帐户信息
  • 我在第一步就被卡住了。也许我在这方面做得不对,但我想我可以使用perl LWP库来访问表单数据并填写信息。作为第一步,我查看了www.bwsc.org上的相关源html以获取表单信息:

    <div id="logonbox_SB">               
            <form action="/ACCOUNTS/security_main.asp" method="get">
            <div id="FS_1">
            <label for="AcctNum" id="acctnum_label">Account Number</label> 
            <input name="AcctNum" type="text" class="formtext1" size="9" maxlength="9" />
            </div>
            <div id="FS_2">
            <label for="MtrNum" id="accsnum_label">Access Number</label>
            <input name="MtrNum" type="text" class="formtext2" size="4" maxlength="4" />
            </div>
            <input type="image" value="Submit" name="search" class="boxsubmitbtn" src="/images/buttons/login.gif" alt="Login">
            </form>
    
            <p><a href="/ACCOUNTS/accounts.asp">Need help logging in?</a> </p>
    
    </div><!--end logonbox_SB-->
    
    如果我查看输出文件out.txt(我认为应该包含响应html),它只会给我一个错误页面的html,说我没有提供有效的帐户信息。我真的不确定我做错了什么。我尝试了各种方法来传递cpan文档中建议的参数,但没有成功

    需要注意的一些事项:

  • 该表单没有name/id属性(不确定这是否重要)
  • 表单正在使用get方法
  • 包含响应html的out.txt文件与我故意使用浏览器错误登录时收到的html不同。我的意思是,如果我使用浏览器并且没有输入任何帐户信息,浏览器中的错误页面与使用此脚本时收到的错误页面不同

  • 以下代码在我的项目中起作用

    使用HTTP::Headers;
    使用LWP::UserAgent
    my$headers=HTTP::headers->new('Accept-Encoding'=>'gzip');
    my$useragent=LWP::useragent->new(agent=>'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/30.0.1599.114 Safari/537.36',超时=>20,保持_活动=>100,默认_头=>$headers);
    我的$url=http://www.bwsc.org/ACCOUNTS/security_main.asp?AcctNum=XXX&MtrNum=XXX';
    我的$response=$useragent->get($url);
    我的$content=$response->content;
    

    试试看。

    您需要立即从此帖子中删除您的帐户详细信息!此外,请与网站所有者联系,以从编辑历史记录中删除您的帐户详细信息。具有讽刺意味的是,
    security\u main.asp
    在查询字符串中包含敏感数据。您是否尝试在从浏览器和脚本登录时嗅探您的HTTP流量?这两种情况有何不同?如果您从Perl和浏览器发出完全相同的请求,服务器必须返回相同的响应。还可以尝试将
    &search=Submit
    附加到URL。它肯定是从浏览器发送的。我的工作也是通过以下方式完成的:
    ua->cookie\u jar(
    HTTP::Cookies->new(file=>'mycookies.txt',
    autosave=>1))`
    #! /usr/bin/perl
    
    use strict;
    use LWP::UserAgent;
    use HTTP::Request::Common;
    
    my ($ua, $request, $response, $content);
    $ua = LWP::UserAgent->new;
    
    $request = new HTTP::Request('GET','http://www.bwsc.org/ACCOUNTS/security_main.asp?AcctNum=XXX&MtrNum=XXX' );
    $response = $ua->request($request);
    
    my $content = $response->content;
    
    open(FILE, ">out.txt");
    print FILE $content;
    close(FILE);