curl說明

      網(wǎng)友投稿 881 2025-04-01

      https://baike.baidu.com/item/curl/10098606?fr=aladdin

      curl是利用 URL語(yǔ)法在命令行方式下工作的開源文件傳輸工具。它被廣泛應(yīng)用在 Unix、多種 Linux發(fā)行版中,并且有 DOS和 Win32、Win64下的移植版本。

      目錄

      1 設(shè)計(jì)方法

      ? 獲得頁(yè)面

      ? 獲取表單

      ? 使用PUT

      ? 有關(guān)認(rèn)證

      ? 引用

      ? 指定用戶端

      ? COOKIES

      ? 加密HTTP

      ? http認(rèn)證

      ? 注意事項(xiàng)

      2 命令

      3 相關(guān)函數(shù)

      設(shè)計(jì)方法

      獲得頁(yè)面

      使用命令:curl http://curl.haxx.se

      這是最簡(jiǎn)單的使用方法。用這個(gè)命令獲得了http://curl.haxx.se指向的頁(yè)面,同樣,如果這里的URL指向的是一個(gè)文件或者一幅圖都可以直接下載到本地。如果下載的是HTML文檔,那么缺省的將不顯示文件頭部,即HTML文檔的header。要全部顯示,請(qǐng)加參數(shù) -i,要只顯示頭部,用參數(shù) -I。任何時(shí)候,可以使用 -v 命令看curl是怎樣工作的,它向服務(wù)器發(fā)送的所有命令都會(huì)顯示出來。為了 斷點(diǎn)續(xù)傳,可以使用-r參數(shù)來指定傳輸范圍。

      獲取表單

      在WEB頁(yè)面設(shè)計(jì)中,form是很重要的元素。Form通常用來收集并向網(wǎng)站提交信息。提交信息的方法有兩種,GET方法和POST方法。先討論GET方法,例如在頁(yè)面中有這樣一段:

      那么瀏覽器上會(huì)出現(xiàn)一個(gè)文本框和一個(gè)標(biāo)為“OK”的按鈕。按下這個(gè)按鈕, 表單就用GET方法向服務(wù)器提交文本框的數(shù)據(jù)。

      例如原始頁(yè)面是在 www.hotmail. com/when/birth.html看到的,然后您在文本框中輸入1905,然后按OK按鈕,那么瀏覽器的URL現(xiàn)在應(yīng)該是:“www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”

      對(duì)于這種網(wǎng)頁(yè),curl可以直接處理,例如想獲取上面的網(wǎng)頁(yè),只要輸入:

      curl "www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK"

      就可以了。

      表單用來提交信息的第二種方法叫做POST方法,POST方法和GET方法的區(qū)別在于GET方法使用的時(shí)候,瀏覽器中會(huì)產(chǎn)生目標(biāo)URL,而POST不會(huì)。類似GET,這里有一個(gè)網(wǎng)頁(yè):

      瀏覽器上也會(huì)出現(xiàn)一個(gè)文本框和一個(gè)標(biāo)為“OK”的按鈕。按下這個(gè)按鈕, 表單用POST方法向服務(wù)器提交數(shù)據(jù)。

      這時(shí)的URL是看不到的,因此需要使用特殊的方法來抓取這個(gè)頁(yè)面:

      curl -d "birthyear=1905&press=OK" www.hotmail. com/when/junk.cgi

      這個(gè)命令就可以做到。

      1995年年末,RFC 1867定義了一種新的POST方法,用來上傳文件。主要用于把本地文件上傳到服務(wù)器。此時(shí)頁(yè)面是這樣寫的:

      對(duì)于這種頁(yè)面,curl的用法不同:

      curl -F upload=@localfilename -F press=OK URL

      curl說明

      這個(gè)命令的實(shí)質(zhì)是將本地的文件用POST上傳到服務(wù)器。

      有關(guān)POST還有不少用法,用戶可以自己摸索。

      使用PUT

      HTTP協(xié)議文件上傳的標(biāo)準(zhǔn)方法是使用PUT,此時(shí)curl命令使用-T參數(shù):

      curl -T uploadfile www.uploadhttp. com/receive.cgi

      有關(guān)認(rèn)證

      curl可以處理各種情況的認(rèn)證頁(yè)面,例如下載用戶名/密碼認(rèn)證方式的頁(yè)面(在IE中通常是出現(xiàn)一個(gè)輸入用戶名和密碼的輸入框):

      curl -u name:password www.secrets. com

      如果網(wǎng)絡(luò)是通過http 代理服務(wù)器出去的,而代理服務(wù)器需要用戶名和密碼,那么輸入:

      curl -U proxyuser:proxypassword http://curl.haxx. se

      任何需要輸入用戶名和密碼的時(shí)候,只在參數(shù)中指定用戶名而空著密碼,curl可以交互式的讓用戶輸入密碼。

      引用

      有些網(wǎng)絡(luò)資源訪問的時(shí)候必須經(jīng)過另外一個(gè)網(wǎng)絡(luò)地址跳轉(zhuǎn)過去,這用術(shù)語(yǔ)來說是:referer,引用。

      對(duì)于這種地址的資源,curl也可以下載:

      curl -e http://curl.haxx. se daniel.haxx. se

      指定用戶端

      有些網(wǎng)絡(luò)資源首先需要判斷用戶使用的是什么瀏覽器,符合標(biāo)準(zhǔn)了才能夠下載或者瀏覽。

      此時(shí)curl可以把自己“偽裝”成任何其他瀏覽器:

      curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL

      這個(gè)指令表示curl偽裝成了IE5.0,用戶平臺(tái)是Windows 2000。(對(duì)方服務(wù)器是根據(jù)這個(gè)字串來判斷客戶端的類型的,所以即使使用AIX也無所謂)。

      使用:

      curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL

      此時(shí)curl變成了Netscape,運(yùn)行在PIII平臺(tái)的Linux上了。

      COOKIES

      Cookie是服務(wù)器經(jīng)常使用的一種記憶客戶信息的方法。如果cookie被記錄在了文件中,那么使用命令:

      curl -b stored_cookies_in_file www.cookiesite. com

      curl可以根據(jù)舊的cookie寫出新cookie并發(fā)送到網(wǎng)站:

      curl -b cookies.txt -c newcookies.txt www.cookiesite. com

      加密HTTP

      如果是通過OpenSSL加密的https協(xié)議傳輸?shù)木W(wǎng)頁(yè),curl可以直接訪問:

      curl https://that.secure.server. com

      http認(rèn)證

      如果是采用證書認(rèn)證的http地址,證書在本地,那么curl這樣使用:

      curl -E mycert.pem https://that.secure.server. com

      注意事項(xiàng)

      curl非常博大,用戶要想使用好這個(gè)工具,除了詳細(xì)學(xué)習(xí)參數(shù)之外,還需要深刻理解http的各種協(xié)議與URL的各個(gè)語(yǔ)法。

      這里推薦幾個(gè)讀物:

      RFC 2616 HTTP協(xié)議語(yǔ)法的定義。

      RFC 2396 URL語(yǔ)法的定義。

      RFC 2109 Cookie是怎樣工作的。

      RFC 1867 HTTP如何POST,以及POST的格式。

      命令

      linux curl命令

      -a/--append 上傳文件時(shí),附加到目標(biāo)文件

      -A/--user-agent 設(shè)置用戶代理發(fā)送給服務(wù)器

      - anyauth 可以使用“任何”身份驗(yàn)證方法

      -b/--cookie cookie字符串或文件讀取位置

      - basic 使用HTTP基本驗(yàn)證

      -B/--use-ascii 使用ASCII /文本傳輸

      -c/--cookie-jar 操作結(jié)束后把cookie寫入到這個(gè)文件中

      -C/--continue-at 斷點(diǎn)續(xù)轉(zhuǎn)

      -d/--data HTTP POST方式傳送數(shù)據(jù)

      --data-ascii 以ascii的方式post數(shù)據(jù)

      --data-binary 以二進(jìn)制的方式post數(shù)據(jù)

      --negotiate 使用HTTP身份驗(yàn)證

      --digest 使用數(shù)字身份驗(yàn)證

      --disable-eprt 禁止使用EPRT或LPRT

      --disable-epsv 禁止使用EPSV

      -D/--dump-header 把header信息寫入到該文件中

      --egd-file 為隨機(jī)數(shù)據(jù)(SSL)設(shè)置EGD socket路徑

      --tcp-nodelay 使用TCP_NODELAY選項(xiàng)

      -e/--referer 來源網(wǎng)址

      -E/--cert 客戶端證書文件和密碼 (SSL)

      --cert-type 證書文件類型 (DER/PEM/ENG) (SSL)

      --key 私鑰文件名 (SSL)

      --key-type 私鑰文件類型 (DER/PEM/ENG) (SSL)

      --pass 私鑰密碼 (SSL)

      --engine 加密引擎使用 (SSL). "--engine list" for list

      --cacert CA證書 (SSL)

      --capath CA目錄 (made using c_rehash) to verify peer against (SSL)

      --ciphers SSL密碼

      --compressed 要求返回是壓縮的形勢(shì) (using deflate or gzip)

      --connect-timeout 設(shè)置最大請(qǐng)求時(shí)間

      --create-dirs 建立本地目錄的目錄層次結(jié)構(gòu)

      --crlf 上傳是把LF轉(zhuǎn)變成CRLF

      -f/--fail 連接失敗時(shí)不顯示http錯(cuò)誤

      --ftp-create-dirs 如果遠(yuǎn)程目錄不存在,創(chuàng)建遠(yuǎn)程目錄

      --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用

      --ftp-pasv 使用 PASV/EPSV 代替端口

      --ftp-skip-pasv-ip 使用PASV的時(shí)候,忽略該IP地址

      --ftp-ssl 嘗試用 SSL/TLS 來進(jìn)行ftp數(shù)據(jù)傳輸

      --ftp-ssl-reqd 要求用 SSL/TLS 來進(jìn)行ftp數(shù)據(jù)傳輸

      -F/--form 模擬http表單提交數(shù)據(jù)

      -form-string 模擬http表單提交數(shù)據(jù)

      -g/--globoff 禁用網(wǎng)址序列和范圍使用{}和[]

      -G/--get 以get的方式來發(fā)送數(shù)據(jù)

      -h/--help 幫助

      -H/--header 自定義頭信息傳遞給服務(wù)器

      --ignore-content-length 忽略的HTTP頭信息的長(zhǎng)度

      -i/--include 輸出時(shí)包括protocol頭信息

      -I/--head 只顯示文檔信息

      從文件中讀取-j/--junk-session-cookies忽略會(huì)話Cookie

      - 界面指定網(wǎng)絡(luò)接口/地址使用

      - krb4 <級(jí)別>啟用與指定的安全級(jí)別krb4

      -j/--junk-session-cookies 讀取文件進(jìn)忽略session cookie

      --interface 使用指定網(wǎng)絡(luò)接口/地址

      --krb4 使用指定安全級(jí)別的krb4

      -k/--insecure 允許不使用證書到SSL站點(diǎn)

      -K/--config 指定的配置文件讀取

      -l/--list-only 列出ftp目錄下的文件名稱

      --limit-rate 設(shè)置傳輸速度

      --local-port 強(qiáng)制使用本地端口號(hào)

      -m/--max-time 設(shè)置最大傳輸時(shí)間

      --max-redirs 設(shè)置最大讀取的目錄數(shù)

      --max-filesize 設(shè)置最大下載的文件總量

      -M/--manual 顯示全手動(dòng)

      -n/--netrc 從netrc文件中讀取用戶名和密碼

      --netrc-optional 使用 .netrc 或者 URL來覆蓋-n

      --ntlm 使用 HTTP NTLM 身份驗(yàn)證

      -N/--no-buffer 禁用緩沖輸出

      -o/--output 把輸出寫到該文件中

      -O/--remote-name 把輸出寫到該文件中,保留遠(yuǎn)程文件的文件名

      -p/--proxytunnel 使用HTTP代理

      --proxy-anyauth 選擇任一代理身份驗(yàn)證方法

      --proxy-basic 在代理上使用基本身份驗(yàn)證

      --proxy-digest 在代理上使用數(shù)字身份驗(yàn)證

      --proxy-ntlm 在代理上使用ntlm身份驗(yàn)證

      -P/--ftp-port

      -Q/--quote 文件傳輸前,發(fā)送命令到服務(wù)器

      -r/--range 檢索來自HTTP/1.1或FTP服務(wù)器字節(jié)范圍

      --range-file 讀取(SSL)的隨機(jī)文件

      -R/--remote-time 在本地生成文件時(shí),保留遠(yuǎn)程文件時(shí)間

      --retry 傳輸出現(xiàn)問題時(shí),重試的次數(shù)

      --retry-delay 傳輸出現(xiàn)問題時(shí),設(shè)置重試間隔時(shí)間

      --retry-max-time 傳輸出現(xiàn)問題時(shí),設(shè)置最大重試時(shí)間

      -s/--silent靜音模式。不輸出任何東西

      -S/--show-error 顯示錯(cuò)誤

      --socks4 用socks4代理給定主機(jī)和端口

      --socks5 用socks5代理給定主機(jī)和端口

      --stderr

      -t/--telnet-option Telnet選項(xiàng)設(shè)置

      --trace 對(duì)指定文件進(jìn)行debug

      --trace-ascii Like --跟蹤但沒有hex輸出

      --trace-time 跟蹤/詳細(xì)輸出時(shí),添加時(shí)間戳

      -T/--upload-file 上傳文件

      --url Spet URL to work with

      -u/--user 設(shè)置服務(wù)器的用戶和密碼

      -U/--proxy-user 設(shè)置代理用戶名和密碼

      -v/--verbose

      -V/--version 顯示版本信息

      -w/--write-out [format]什么輸出完成后

      -x/--proxy 在給定的端口上使用HTTP代理

      -X/--request 指定什么命令

      -y/--speed-time 放棄限速所要的時(shí)間。默認(rèn)為30

      -Y/--speed-limit 停止傳輸速度的限制,速度時(shí)間'秒

      -z/--time-cond 傳送時(shí)間設(shè)置

      -0/--http1.0 使用HTTP 1.0

      -1/--tlsv1 使用TLSv1(SSL)

      -2/--sslv2 使用SSLv2的(SSL)

      -3/--sslv3 使用的SSLv3(SSL)

      --3p-quote like -Q for the source URL for 3rd party transfer

      --3p-url 使用url,進(jìn)行第三方傳送

      --3p-user 使用用戶名和密碼,進(jìn)行第三方傳送

      -4/--ipv4 使用IP4

      -6/--ipv6 使用IP6

      -#/--progress-bar 用進(jìn)度條顯示當(dāng)前的傳送狀態(tài)

      相關(guān)函數(shù)

      PHP cURL 函數(shù)

      PHP [1] ? 支持的由Daniel Stenberg創(chuàng)建的libcurl庫(kù)允許你與各種的服務(wù)器使用各種類型的協(xié)議進(jìn)行連接和通訊。

      libcurl支持 http、 https、 ftp、 gopher、 telnet、dict、 file和 ldap協(xié)議。libcurl同時(shí)也支持HTTPS認(rèn)證、HTTP POST、HTTP PUT、 FTP 上傳(這個(gè)也能通過PHP的FTP擴(kuò)展完成)、HTTP 基于表單的上傳、代理、cookies和用戶名+密碼的認(rèn)證。

      PHP中使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求的方法

      這些函數(shù)在PHP 4.0.2中被引入。

      以下包含了PHP cURL函數(shù)列表:

      下載管理程式

      HTTP 網(wǎng)絡(luò)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:wps演示怎么自動(dòng)播放?wps設(shè)置PPT自動(dòng)播放教程圖解
      下一篇:幫助您實(shí)現(xiàn)更多目標(biāo)的3個(gè)原則
      相關(guān)文章
      亚洲天然素人无码专区| 亚洲制服丝袜精品久久| 国产亚洲一区二区精品| mm1313亚洲精品国产| 久久精品亚洲日本波多野结衣| 亚洲视频在线观看免费视频| 久久青青成人亚洲精品| 国产亚洲A∨片在线观看| 亚洲精品无码成人片久久 | 亚洲女久久久噜噜噜熟女| 亚洲一区二区三区在线播放| 亚洲精品国产va在线观看蜜芽| 无码天堂亚洲国产AV| 亚洲成网777777国产精品| 亚洲妇女无套内射精| 亚洲狠狠色丁香婷婷综合| 亚洲免费综合色在线视频| 亚洲爆乳成av人在线视菜奈实| 亚洲AV永久无码精品放毛片| 亚洲av第一网站久章草| 亚洲国产成人五月综合网| 亚洲天堂在线视频| 亚洲色大成网站www永久一区| 亚洲午夜未满十八勿入网站2| 亚洲色大成网站www永久一区 | 日本亚洲视频在线| 久久国产亚洲精品麻豆| 图图资源网亚洲综合网站| 中文字幕亚洲精品资源网| 亚洲熟妇无码久久精品| 自拍偷区亚洲国内自拍| 亚洲AV无码专区在线观看成人| 亚洲av午夜精品一区二区三区| 亚洲色偷拍区另类无码专区| 人人狠狠综合久久亚洲婷婷| 亚洲系列国产精品制服丝袜第| 亚洲av一本岛在线播放| 亚洲AV无码一区二区三区电影| 久久久久噜噜噜亚洲熟女综合| 亚洲色自偷自拍另类小说| 亚洲综合精品香蕉久久网97|