2016-03-08 71 views
0

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

$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

由于缺少表单目标网址的详细信息,我会猜测这是https,而表单的来源很简单。首先要注意的是,虽然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连接时存在错误。

+0

它是所有HTTP,也提交等。我也试过您的解决方案,同样的结果:( 它使用的是代理 – JOhnlw009a

+0

@ JOhnlw009a时看起来像脚本就不会提交都:通过自身的脚本除https代理以外没有任何明显的问题,不幸的是,你现在提供的信息使得它不可能重现问题,我建议你提供一个最小的例子来重现它,因为你声称https没有做任何事情,你也可以取消了https代理的设置 –

+0

我确实消除了它并跟踪了eveyrthing,但它都只是真正的http,我在安装了TOR/Privoxy的几台服务器上测试过,防火墙也关闭了。我猜。 – JOhnlw009a