2012-07-26 66 views
3

我對此有一段時間...將IE瀏覽器加載到Perl的WWW :: Mechanize

我試圖連接到需要登錄的網站。我明顯可以直接進入頁面而不登錄,因爲IE有一個cookie來這樣做。

我正在研究一個腳本,該腳本將由除我以外的人員運行,所以我不想用我的登錄信息發送文件。理想情況下,其他人不必將這些信息也放入。

這裏是代碼的一小部分相關部分。我只是想從IE加載cookies並打印出來(因爲我假設他們在那裏,他們將被正確訪問)。

我已經搜索了幾個小時,甚至讀過人聲稱這會加載cookie。我發現它現在可以存儲cookie,但不會在我的電腦上加載現有的cookie。

#!/usr/bin/perl -w 
use strict; 
use WWW::Mechanize; 
use HTTP::Cookies::Microsoft; 
use Win32::TieRegistry(Delimiter => "/"); 

my $cookies_dir = $Registry-> {"CUser/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/Cookies"}; 
my $cookie_jar = HTTP::Cookies::Microsoft->new(file => "$cookies_dir\\index.dat",'delayload'=>0,); 
my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar); 
print "Set Cookie Jar?\n", $cookie_jar->as_string, "\n"; 
print "Set Cookie Jar?\n", $mech->cookie_jar->as_string, "\n"; 

我可以加載現有的cookies嗎?

HTTP::Cookies::Microsoft與IE9不兼容? (網站列出IE6和IE7,但自2002年以來未更新)。

我甚至沒有看到這個例子或其中的任何例子,它實際上載入了現有的cookies。如果這只是一個兼容性問題,那麼IE9有什麼選擇? (我必須堅持IE9,因爲它是該公司的支持瀏覽器)

謝謝!

+1

您正在使用哪個版本的HTTP :: Cookies :: Microsoft?我發現6.00/6.01列出了IE 5和6,但最後更新於2011年。 – simbabque 2012-07-26 17:42:46

+1

這將是一個不錯的問題。我顯然使用了6.00。我使用CPAN進行安裝。 – Sraaz 2012-07-26 18:03:17

+1

我看過我的win7 cookie目錄,那裏沒有'index.dat'文件。只有一堆文本文件似乎每個都包含一個或多個Cookie。我很少使用IE,所以這可能是問題。雖然模塊的代碼看起來像只讀取.dat文件。 – simbabque 2012-07-26 19:09:11

回答

2

在我的Windows XP系統上使用IE8時,Cookie位於C:\Documents and Settings\userid\Local Settings\Temporary Internet Files。沒有index.dat,這些cookie位於它們自己的文件中。

我不知道where IE9 stores cookies。但是,如果您嘗試在用戶通過IE登錄的站點上自動執行某些操作並啓動程序,則可以使用Win32::IE::Mechanize或通過Win32::OLE驅動IE。例如,請參閱我的博文Using Win32::OLE with events to capture Internet Explorer screenshots with Perl。有關可用方法,屬性和事件的信息,請參閱InternetExplorer object documentation

+0

你好。我不知道爲什麼,但'Win32 :: OLE'給線程和事件帶來了很多麻煩。我開始嘗試'Win32 :: IEAutomation',它似乎無法加載代理 - >文檔並一遍又一遍地失敗。 'Win32 :: IE :: Mechanize'在大約一半的測試用例上失敗了,不會安裝。在花費了很多時間在其他人身上之後,我目前正在給'Win32 :: IE :: Mechanize'另一個安裝位置。 (另外,'index.dat'文件被隱藏,我不得不選擇顯示系統文件來查看它。它可能在那裏,你可能沒有顯示系統文件。) – Sraaz 2012-07-27 16:29:59

+0

我不推薦使用'Win32: :與Perl線程的OLE'。對我來說,蠕蟲太多了。通過'Win32 :: OLE'控制IE一直在爲我工作。然而,你真的必須學習MSDN文檔。 – 2012-07-27 20:14:33