Perl WWW :: Mechanize使用Proxy,无法提交表单

时间:2016-03-08 11:15:21

标签: perl proxy www-mechanize

使用WWW :: Mechanize和代理时,一切正常。但是,在获取表单并提交发布数据时,通过使用代理它将无法工作(超时)。没有代理一切正常。 我有这样的代码:

    $browser = WWW::Mechanize->new( autocheck => 1, timeout => 3 );             
    $browser->proxy('http','http://127.0.0.1:8118');    
    $browser->proxy('https','https://127.0.0.1:8118');                                      
    $browser->get("http://someurl.com");        

    if ( $browser->success() ) {

        $browser->form_name('form');

        $browser->field('a', 1);
        $browser->field('b', 2);

        $browser->field('c', 3);

        # won't submit using proxy
        $browser->submit();

  }

有没有人能解决这个问题?

1 个答案:

答案 0 :(得分:0)

由于缺少表单目标URL的详细信息,我猜这是https,而表单的来源是简单的http。首先要注意的是,虽然LWP(WWW :: Mechanize底层的库)支持代理来处理https连接的转发,但它可能不支持https自己访问的代理。但是考虑到你使用相同的IP:端口用于http和https代理,我的假设是你只是简单地把它弄错了,它必须是这样的:

$browser->proxy('http', 'http://127.0.0.1:8118');    
$browser->proxy('https','http://127.0.0.1:8118');

除此之外,请确保您使用的LWP版本至少为6.06,因为早期版本在配置代理时正确处理https连接时存在错误。