1. 程式人生 > >關於curl命令列下載頁面為空的問題

關於curl命令列下載頁面為空的問題

平時經常用到wget/curl命令列下載頁面,有時候會遇到curl命令列下載為空的情況,如:

[email protected]:~$ curl 'http://m.youku.com' -o youku.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[email protected]
:~$ file youku.html youku.html: ERROR: cannot open `youku.html' (No such file or directory)

而wget下載,可以得到內容:
[email protected]:~$ wget 'http://m.youku.com' -O youku.html
--2015-08-06 20:09:44--  http://m.youku.com/
正在解析主機 m.youku.com (m.youku.com)... 211.151.146.60
正在連線 m.youku.com (m.youku.com)|211.151.146.60|:80... 已連線。
已發出 HTTP 請求,正在等待迴應... 302 Moved Temporarily
位置:http://m.youku.com/wap/ [跟隨至新的 URL]
--2015-08-06 20:09:44--  http://m.youku.com/wap/
再次使用存在的到 m.youku.com:80 的連線。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度: 16603 (16K) [text/html]
正在儲存至: “youku.html”

100%[======================================================================================================>] 16,603      86.4KB/s   用時 0.2s 

2015-08-06 20:09:44 (86.4 KB/s) - 已儲存 “youku.html” [16603/16603])

[email protected]
:~$ file youku.html youku.html: HTML document, UTF-8 Unicode text

如果這種情況,很可能是因為在下載過程中,發生了重定向。wget命令在下載時,預設能夠自動下載重定向後的連結,而curl預設是不會的。通過對curl加引數-v進行除錯,也可以發現,下載時發生了302重定向:
[email protected]:~$ curl 'http://m.youku.com' -o youku.html -v
* Rebuilt URL to: http://m.youku.com/
* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 211.151.146.60...
* Connected to m.youku.com (211.151.146.60) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: m.youku.com
> Accept: */*
> 
< HTTP/1.1 302 Moved Temporarily
* Server nginx/0.8.54 is not blacklisted
< Server: nginx/0.8.54
< Date: Thu, 06 Aug 2015 12:14:52 GMT
< Content-Type: text/html;charset=utf-8
< Connection: keep-alive
< Set-Cookie: JSESSIONID=ED87E6E12D2605176672773D570B8377; Path=/; HttpOnly
< Location: http://www.youku.com
< Content-Length: 0
< 
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host m.youku.com left intact


通過man curl發現,可以通過加選項-L進行重定向,來解決下載為空的問題:

[email protected]:~$ curl 'http://m.youku.com' -o youku.html -v -L
* Rebuilt URL to: http://m.youku.com/
* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 211.151.146.60...
* Connected to m.youku.com (211.151.146.60) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: m.youku.com
> Accept: */*
> 
< HTTP/1.1 302 Moved Temporarily
* Server nginx/0.8.54 is not blacklisted
< Server: nginx/0.8.54
< Date: Thu, 06 Aug 2015 12:17:43 GMT
< Content-Type: text/html;charset=utf-8
< Connection: keep-alive
< Set-Cookie: JSESSIONID=5ED7472830728CC0C65B60F9EDCCE087; Path=/; HttpOnly
< Location: http://www.youku.com
< Content-Length: 0
< 
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host m.youku.com left intact
* Issue another request to this URL: 'http://www.youku.com'
* Rebuilt URL to: http://www.youku.com/
* Hostname was NOT found in DNS cache
*   Trying 43.250.12.42...
* Connected to www.youku.com (43.250.12.42) port 80 (#1)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.youku.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: text/html
< Accept-Ranges: bytes
< ETag: "2574430301"
< Last-Modified: Thu, 06 Aug 2015 12:16:02 GMT
< Content-Length: 619907
< Connection: close
< Date: Thu, 06 Aug 2015 12:17:43 GMT
* Server b28www4 is not blacklisted
< Server: b28www4
< 
{ [data not shown]
100  605k  100  605k    0     0   394k      0  0:00:01  0:00:01 --:--:--  458k
* Closing connection 1


相關推薦

關於curl命令下載頁面的問題

平時經常用到wget/curl命令列下載頁面,有時候會遇到curl命令列下載為空的情況,如: [email protected]:~$ curl 'http://m.youku.com' -o youku.html % Total % Received

Web 下載圖片

tails 開始 .com log 從服務器 代碼 進行 csdn 成了 問題描述: 文件下載功能是web開發中經常使用到的功能,使用HttpServletResponse對象就可以實現文件的下載。但是下載任務正常進行,下載下來的圖片卻是空 問題代碼:

easyPoi處理檔案下載檔名問題----請求頭資訊

導包:同上一篇匯出封裝請求引數 定義註解: import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import java.lang.annotation.*; /** * 匯出Excel註解. */ @Document

VMware 根據視窗大小自動調整虛擬機器解析度(命令,Arch例)

在使用VMware安裝虛擬機器的時候,Windows、Ubuntu等都有比較好的VM tools支援,所以基本安裝完vm tools之後就直接可以直接根據視窗大小改變解析度了。但是在Archlinux上因為VMware並不能自動安裝,手動安裝之後也不能自動啟動,所以這個功能不能自動開啟,

Jupyter notebook執行出錯,瀏覽器頁面資料夾

用conda裝了好多遍jupyter notebook都不好使,每次下到一大半網路出錯。 改用pip安裝後,還是出現一個問題。命令列顯示對比正常執行情況主要多了兩行問題: 1.forbidden403    2.'_xsrf' argument missing fro

GNU Wget 1.20 釋出,非互動式命令下載工具

GNU Wget 1.20 已釋出,GNU Wget 是一個非互動式的命令列下載工具,支援 HTTP、HTTPS、FTP 和 FTPS 等廣泛使用的網路協議。 值得注意的更新: 新增 `--retry-on-host-error` 選項,用於將  local error 視為臨

Elasticsearch基礎操作與對應的curl命令,python對接實現

前言 Elasticsearch 實際上提供了一系列 Restful API 來進行存取和查詢操作,我們可以使用 curl 等命令來進行操作,但畢竟命令列模式沒那麼方便,所以這裡我們在介紹操作對應curl命令同時也如何利用 Python 來對接 Elasticsearch 實現同樣的

curl命令請求

curl -X POST http://xxxx/xx -h “args” -d “args” -X 請求方式(post/get) -h 設定header中內容 (Content-Type:application/json) -d 請求引數(比如json{“id

hexo建立的tags和categories頁面的解決辦法

title: hexo建立的tags和categories頁面為空的解決辦法 toc: false date: 2018-04-16 02:26:10 主題:landscape 新增type以及menu後仍然顯示空白的解決辦法: 開啟landscape/_partial/article.ejs,

Linux 命令下載工具 wget 的使用技巧

wget 是一個命令列的下載工具。對於我們這些 Linux 使用者來說,幾乎每天都在使用它。下面為大家介紹幾個有用的 wget 小技巧,可以讓你更加高效而靈活的使用 wget。 $ wget -r -np -nd http://example.com/packages/

分散式進階 十 linux命令下載檔案以及常用工具 wget Prozilla MyGet Linuxdown Cu

 linux命令列下載檔案以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel     本文介紹常用的幾種命令列式的下載工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

解決FTP伺服器上中文名檔案下載的問題

有臺伺服器,編碼為GBK,發現伺服器上的中文檔案下載後文件大小為0,開啟為空白。 經調查,是檔名編碼格式不對導致,對於中文情況,使用FTPClient時編碼格式需使用ISO-8859-1 具體程式碼:package com.neusoft.ftptest; import

在Linux平臺上的Ftp伺服器上通過命令下載檔案

本文中,介紹在 Linux shell 中如何使用 ftp 命令。包括如何連線 FTP 伺服器,上傳或下載檔案以及建立資料夾。儘管現在有許多不錯的 FTP 桌面應用,但是在伺服器、SSH、遠端會話中命令列 ftp 命令還是有很多應用的。比如。需要伺服器從 ftp

mysql值相加

有時候會有 select後面列相加的情況 當其中某個值為空是 則直接返回空  遇到這樣的情況加上  ifnull就ok了 SELECT ifnull(SUM(dispatch_fee + fuel_fee + road_fee),0)FROMt_busi_station_e

使用linux 命令下載oracle官網jdk失敗處理方法

最近在伺服器上安裝jdk遇到一個問題,oracle官網下載jdk都需要同意它的license才能下載,所有直接使用wget xxx會下載到它的html檔案,並不能下載真實檔案。 解決辦法: UPDATED FOR JDK 9 it looks like yo

用瀏覽器訪問網站很快,但是用curl命令訪問卻很慢

這幾天遇到一個問題 問題的症狀是這樣的 開啟一個網站,用瀏覽器開啟非常快,但是用命令列的curl或者使用python指令碼來訪問卻非常慢 用charles抓包訪問了一下發現時間全花在了dns上 接著我就試著修改/etc/hosts檔案,無效,雖然訪問最終用了hosts檔案裡

Windows 用cmd命令下載git上資料

1、首先你要安裝Git工具 2配置全域性的name和email,這裡是的你github的name和email git config –global user.name “**” git config –global user.email “*@**.c

CURL --- 命令瀏覽器CURL

curl_close — 關閉一個curl會話 curl_copy_handle — 拷貝一個curl連線資源的所有內容和引數 curl_errno — 返回一個包含當前會話錯誤資訊的數字編號 curl_error — 返回一個包含當前會話錯誤資訊的字串 curl_exec — 執行一個curl會話 cur

命令下載更新Android SDK

前序 最近需要在伺服器上用Jenkins自動打包Android app,從google官網上下載的Linux版本sdk結果發現裡面就只有一個tools目錄有檔案,其他的都沒有。。。 無奈,伺服器是沒有介面的,之前都習慣用IDE去安裝更新,現在嘗試用命令列下載

在linux系統用命令下載、安裝和配置jdk1.8的詳細步驟

文章適用於沒有桌面的Linux配置Java環境: 轉自:益州牧:http://blog.csdn.net/nnaxmy/article/details/42784157?locationNum=5&fps=1。 1.用root使用者登入系統,若系統已有其他版本jdk,可以先解除安裝相關軟體包,命令: