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



当使用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();
  }

有人有解决这个问题的方法吗?

鉴于表单目标的URL缺乏详细信息,我会猜测这是https,而表单的起源很简单http。首先请注意,虽然LWP(WWW::Mechanize底层库)支持代理来处理https连接的转发,但它可能不支持https本身访问的代理。但是鉴于您对http和https代理使用相同的IP:port,我的假设是您只是将其拼写为错字,并且必须如下所示:

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

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

最新更新