2015-02-24 71 views
11

我一直在努力與這一段時間。CasperJS - 下載生成的文件沒有URL

我試圖下載Google Adwords生成的CSV文件「下載報告」按鈕。我可以點擊鏈接,並在後臺查看資源。問題是,爲了下載它,casperJS/phantomJS需要一個指向該文件的URL ......但是當場生成了CSV並且與我所在的頁面具有相同的URL(在該鏈接之後,該鏈接會將您引導至主頁,而不是CSV文件,所以casperJS無法下載)。

有沒有一種方法可以保存沒有URL的資源?

我發現這個解決辦法:downloading a file that comes as an attachment in a POST request response in PhantomJs

但不幸的是,谷歌的Adwords報告按鈕沒有任何形式,我可以參考一下。

+0

你試過這個:http://stackoverflow.com/questions/12461096/casperjs-download-file-without-specifying-url ? – 2015-12-28 12:18:03

+0

您可以檢查是否有任何來自Google開發工具或其他調試工具的服務器請求。 – jcubic 2015-12-28 20:15:10

回答

1

我做了Chrome開發者工具一個簡單的請求分析: 下載請求會(對我來說)到以下網址:

Request URL:https://adwords.google.com/reports/advanced/ReportDownload?authuser=0 

FORMDATA:

__rds:{{censored}} 
__rrd:{{censored}} 
__u:{{censored}} 
__c:{{censored}} 
__rfl:8,9,10 
token:{{censored}}:{{censored}} 

請求報頭:

:authority:adwords.google.com 
:method:POST 
:path:/reports/advanced/ReportDownload?authuser=0 
:scheme:https 
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/ *;q=0.8 
accept-encoding:gzip, deflate 
accept-language:en-US,en;q=0.8,de-DE;q=0.6,de;q=0.4,hr;q=0.2,sr;q=0.2 
cache-control:max-age=0 
content-length:501 
content-type:application/x-www-form-urlencoded 
cookie: {{censored}} 
dnt:1 
origin:https://adwords.google.com 
referer:https://adwords.google.com/reports/advanced/AdvancedReporting?__c={{censored}}&__u={{censored}}&authuser=0&__o=cues 
upgrade-insecure-requests:1 
user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 
x-client-data:{{censored}} 

我已經通過替換刪除了可能特定於我的數據與{{censored}}標籤一起使用。

+0

那麼......這是否解決了你的問題? – 2016-01-04 13:32:00