当使用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 连接方面确实存在错误。