使用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();
}
有没有人能解决这个问题?
答案 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连接时存在错误。