2017-04-20 2 views
0

Also ich versuche, eine Datei über nodejs herunterzuladen, die im Browser gut öffnet, und sogar in Tools wie curl gut herunterladen. Aber nodejs schlägt aus irgendeinem Grund fehl, die Datei herunterzuladen. Ich habe versucht, die Datei über das Modul request im Knoten und über ein Knoten CLI-Modul namens download-cli herunterladen. Beide schlagen entweder mit einer 400 oder 404 Antwort fehl, aber die Datei wird durch normale Tools wie curl gut heruntergeladen.Datei von curl heruntergeladen, aber nicht von node.js

Was könnte das Problem sein? Ich habe versucht, den User-Agent zu dem von Firefox zu setzen (wo es sich gut öffnet), aber das macht den Trick nicht. Ich gehe davon aus, dass das Problem sowieso nichts mit dem User-Agent zu tun hat, da curl keinen eigenen User-Agent hat.

Die URL in Frage kann eine beliebige URL alicdn sein, aber diese ein als Beispiel lässt nehmen: https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg

Hier ist die Antwort durch die obige URL durch den Knoten download-cli Tool ausgeführt und das Invoke-WebRequest Werkzeug in Powershell.

PS C:\code> download https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-син 
хронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg 
Couldn't connect to https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg (404) 
PS C:\code> curl https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхрон 
изации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg 


StatusCode  : 200 
StatusDescription : OK 
Content   : {255, 216, 255, 224...} 
RawContent  : HTTP/1.1 200 OK 
        X-Application-Context: fileserver2-download:prod:7001 
        From-Req-Dns-Type: NA,NA 
        SERVED-FROM: 72.247.178.95 
        Connection: keep-alive 
        Network_Info: DE_FRANKFURT_16509 
        Timing-Allow-Ori... 
Headers   : {[X-Application-Context, fileserver2-download:prod:7001], [From-Req-Dns-Type, NA,NA], [SERVED-FROM, 72.247.178.95], 
        [Connection, keep-alive]...} 
RawContentLength : 114927 
+0

Kann Sie den Code, den Sie herunterladen verwenden, um die Datei von Knoten? Es ist unmöglich zu antworten, wenn wir nicht wissen, wie Sie das versuchen. – serge1peshcoff

+0

@ serge1peshcoff Ich habe versucht, durch alle Arten von Code wie die Verwendung des nativen HTTP-Modul herunterladen, mit Request-Modul und einige andere. Der Code funktionierte für 99% der Fälle einwandfrei, ist hier jedoch fehlgeschlagen. Siehe die Antwort für den tatsächlichen Grund, dass dies fehlgeschlagen ist. – ArsalanDotMe

Antwort

0

Okay, so habe ich versucht, die Datei durch native HTTP-Modul des Knotens Herunterladen, habe ich versucht, durch das beliebte request Modul herunterzuladen und ich versuchte, durch einen Knoten basierend cli Werkzeug download-cli genannt herunterzuladen. Jeder von ihnen hatte die gleiche Antwort. So habe ich Wireshark gefeuert und versucht, genau zu sehen, wo die Anforderungen unterschiedlich sind und es stellt sich heraus, dass Tools wie curl und Invoke-WebRequest den Pfad vor dem Erstellen einer GET-Anfrage entkommen, aber native Modul des Knotens macht das nicht. Das war der einzige Unterschied. Die Verwendung der Escaped-URL funktioniert einwandfrei.

Invoke-WebRequest der GET-Pfad:

GET /kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-%D1%87%D0%B0%D1%81%D1%8B-%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-notifier-sim-%D0%BA%D0%B0%D1%80%D1%82%D1%8B-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-bluetooth-%D0%B4%D0%BB%D1%8F-android-apple-iphone.jpg_640x640.jpg HTTP/1.1 

Knoten des GET-Pfad:

GET /kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-G0AK-?>[email protected]:[email protected]>=870F88-notifier-sim-:[email protected]?>4:;NG5=85-bluetooth-4;O-android-apple-iphone.jpg_640x640.jpg HTTP/1.1 
0

, warum Sie tat es nicht:

$url='https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-%D1%87%D0%B0%D1%81%D1%8B-%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-notifier-sim-%D0%BA%D0%B0%D1%80%D1%82%D1%8B-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-bluetooth-%D0%B4%D0%BB%D1%8F-android-apple-iphone.jpg_640x640.jpg' 
Invoke-WebRequest -Uri $url -OutFile C:\temp\android-apple-iphone.jpg_640x640.jpg 
Verwandte Themen