2016-04-23 18 views
0

我得到了一項任務,每天從網站下載一個文件。我們稱之爲「https://test.example.com」。我有憑據,允許我登錄到該網站,在那裏Flash界面顯示可供下載的文件。下載文件後,會以各種方式進行處理。我已經將Powershell組合在一起,可以處理所有這些,我只是很難自動實現文件的實際下載。Powershell從具有不斷變化的URL的網站下載文件的方法?

我用Flash界面一邊看網絡活動,下載幾個文件,並發現它實際上是從這個網址拉文件:

https://test.example.com/link/EBDB7F67EF3B28XX99NCAD9920160423/file.zip

因此,我能夠把它放在一起,以便通過我的PS腳本自動獲取文件:

$url = 'https://test.example.com/link/EBDB7F67EF3B28XX99NCAD9920160423/file.zip' 
$output = "C:\Downloads\file.zip" 

Invoke-WebRequest -Uri $url -OutFile $output 

但是,網址中的數字每天都在變化。我能找到的唯一可辨別的模式是最後八位數字始終是該特定文件發佈的日期。

有沒有一種很好的方法來解決這個問題?我一直在試用通配符和模式,以及檢查HTML中是否可以過濾的元素,但我很難找到正確的解決方案。

+1

它使用閃存? 2016年? Godspeed ... –

+0

AFAIK無法與Flash內容交互。 –

+0

據我瞭解,您的問題與PowerShell的關係較少,更多的是要確定您嘗試下載文件的URL中的模式。如果這種理解是正確的,請嘗試找出URL中是否有任何模式或網站公開的任何編程方式。除非您提供這些信息,否則我們無法提供幫助。 –

回答

0

這很難自動化。除非它是專門爲此設計的,否則不能從腳本驅動Flash。正如我現在看到了你唯一的選擇是:

  1. 聯繫網站開發者如果可能的話,也許他們可以給你生成鏈接功能的細節。這給了我一個想法 - 也許你可以對Flash代碼進行反向工程,以便自己找到該功能的細節。使用閃光反編譯器爲此。
  2. 模擬用戶瀏覽Flash網站。這可以通過以下方式之一完成:
    • Autohotkey - 您可以記錄相對於瀏覽器窗口的鼠標點擊並再次執行腳本。除非Flash界面過於動態和不可預測,否則它將起作用。
    • Sikuli - 另一種依賴圖片段識別的自動化語言。

以上所有2. *方法產生脆弱的自動化代碼,因爲它們依賴於瀏覽器設置(變焦,主題),甚至操作系統設置。出於這個原因,你需要爲所有可能的機器(虛擬機器)奉獻一臺機器。反編譯Flash代碼並在PowerShell中重新實現url生成代碼將使其成爲可靠的100%。

正如有人在評論中說這不是一個powershell queestion,但瀏覽器自動化問題。

+0

哈希可能在數據庫或後端服務中生成,因爲它只在第二天更改。 –

+0

我懷疑它,但你永遠不知道,在這種情況下,AHK或Sikuli無論如何都會完成這項工作。 – majkinetor