2016-03-08 72 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