curl---一款實用的URL命令行網路通訊工具/庫

来源:http://www.cnblogs.com/hbzyin/archive/2017/07/23/7224338.html
-Advertisement-
Play Games

最近一段時間在看樸靈翻譯的《深入淺出nodejs》,裡面有提到一種脫離瀏覽器的客戶端網路通訊工具,curl命令,自己在電腦上試了一下,感覺非常好用,而且莫名的感覺這是一個非常強大的網路工具,一定會成為web開發者的一把小軍刀;因此就上網查了一下相關資料,並整理了一下相關的常用用法: 一、簡介 CUR ...


最近一段時間在看樸靈翻譯的《深入淺出nodejs》,裡面有提到一種脫離瀏覽器的客戶端網路通訊工具,curl命令,自己在電腦上試了一下,感覺非常好用,而且莫名的感覺這是一個非常強大的網路工具,一定會成為web開發者的一把小軍刀;因此就上網查了一下相關資料,並整理了一下相關的常用用法:

一、簡介

  • CURL:本篇文章的標題即為 官網 上醒目定義的直譯:command line tool and library for transferring data with URLs;
  • 支持的協議類型:支持幾乎全部的網路傳輸協議類型,你可能會質疑這裡的全部,無需解釋,直接貼上原文

    Supports...
    DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.

  • 本文不介紹工具的安裝,如需安裝教程,請自行移步 官網 或者 參考此篇

    二、常用用法

    不管是網站開發,還是其他的傳輸協議類型,回歸本質都是對數據的讀寫操作,即創建、查詢、加解密、傳輸、修改、刪除;其不同之處在於各種協議的基礎架構及協議類型的不同,從實現形式上來看,也就是傳輸控制欄位的不同,以及傳輸界面、交互的差異。下麵以網站開發的角度,類比http協議的8中http請求方式(get、post、put、delete、head、connnect、options、trace),從客戶端分別來進行各部分操作的說明:

1. 查詢:GET--查看網頁源碼

  1. 如查看百度首頁源碼:
    curl www.baidu.com
    該命令將發送請求,併在命令行顯示相應的結果,如下,:
  2. 如果查看還不能滿足你的需求,需要進一步將百度首頁源碼保存在本地進行學習查看:curl -o name www.baidu.com
    將下載目標網頁源碼到本地,並命名為‘name’:

  3. GET 的其他用法
  • curl -i www.baidu.com ------獲取請求結果,將響應頭、響應體同時在命令行輸出
  • curl -I www.baidu.com ------獲取請求結果,僅僅將響應頭信息在命令行輸出
  • curl -L baidu.com ------如目標網頁轉移位置,將自動進行重定向
  • curl -v www.baidu.com ------在命令行輸出一次http請求的全過程,包括埠連接、請求頭、請求體、響應頭、響應體
  • curl --trace out.txt www.baidu.com ------將整個請求的埠連接、請求信息、響應過程的全部信息保存至本地,並重命名為‘out.txt’
  • curl www.baidu.com/s?wd=hbzyin ------用百度搜索關鍵字‘hbzyin’: 將在百度首頁查詢關鍵字‘hbzyin’,並將結果在命令行輸出
  1. GET 添加額外請求信息
  • curl --header "Content-Type=text.plain" yourwebsite.com ----增加請求頭/request header
  • curl --cookie "cookiename=xxx" yourwebsite.com -----增加cookie信息至請求
  • curl -c cookies-file yourwebsite.com -----將請求響應的cookie信息保存至文件cookie-file中
  • curl -b cookies-file yourwebsite.com -----將請求響應的cookie信息保存至文件cookie-file中,併在後續請求中使用
  • curl --referer yourwebsite.com www.baidu.com ------添加入口跳轉來源yourwebsite.con ,跳轉至目標網站百度
  • curl --user-agent "your user angent" baidu.com ------添加客戶端設備信息;伺服器會根據該欄位,針對不同設備返回不同網頁格式。如手機和PC

2. 上傳數據:POST--向伺服器上傳信息

  1. 表單數據上傳:
    curl -X POST --data "key=value" yourwebsite.com ------向目標網站發送post 請求,請求體為:'key=value'
  2. 表單數據url加密後上傳:
    curl -X POST --data-urlencode "key=value" yourwebsite.com --向目標網站發送url加密後的post請求,請求體為:‘key=value’

    此處 -X 為curl請求方式設置關鍵字, curl預設請求方式為get,添加-X參數後,可支持其他請求方式;請求方式必須大寫

3. 修改數據:PUT

curl -X PUT yourwebsite.com --data "data=somedata" ---向目標網站發送請求,請求體為:data=somedata

4. 刪除數據:DELETE

curl -X DELETE yourwebsite.com/deleteSource --向目標網站發送刪除請求,請求地址: yourwebsite.com/deleteSource

5. 文件上傳:

curl --form formname=@localfilname --form press=OK yourwebsite.com

6. 參考文章

  1. 15 Practical Linux cURL Command Examples;
  2. CURL常用命令;
  3. CURL網站開髮指南
  4. CURL英文官網
  5. CURL github項目

    以上主要從前端開發角度,對curl的一般用法進行了整理,對於網站開發或後端API開發,這都不失為一個簡介快速方便的工具;如果能進一步將項目開發的需要編寫成測試腳本,將為開髮帶來極大的快感!

--END


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 字元串參數:一定要將單引號替換成2個單引號,這點非常重要 正常方式:SELECT * FROM 客戶信息 WHERE 客戶編號='001' 註入方式:SELECT * FROM客戶信息WHERE客戶編號='001'; UPDATE 客戶信息 SET 客戶編號 = NULL--' 結果:你的客戶信息將 ...
  • NoSql:全名【not only sql 】是一種非關係型資料庫 High performance 高併發讀寫Huge storage 海量數據的高效存儲與訪問產品:mongodb redis hbase 等 。 各個產品存儲類型描述: 鍵值對來存儲資料庫 【Redis】 優勢:快速查詢。 缺點: ...
  • 剛開始學習mongodb,對筆記做了一個整理。是基於nodejs來學習的。 1.mongodb介紹 mongodb 是C++語言編寫的,是一個基於分散式文件存儲的開源資料庫系統。 在高負載的情況下,添加更多的節點,可以保證伺服器性能。 mongodb 旨在為WEB應用提供可擴展的高性能數據存儲解決方 ...
  • 實體類創建後在方法中對哪些屬性賦值了,傳遞到底層方法時在底層如何得知哪些屬性被賦值過。如何監控屬性的更改,請看腦洞大開之《大花貓動了哪些小玩具》——記屬性監控之曲線救國。 ...
  • fafa ...
  • 隨著用戶量和併發數的增加,單台伺服器出現了性能問題,此時必須要將應用程式和資料庫分離,分離後整個網站變成三台伺服器了:應用伺服器(或稱web伺服器),資料庫伺服器和文件伺服器。這三台伺服器對伺服器的配置要求是不一樣的,應用伺服器需要處理大量的業務邏輯,所以需要更快更強大的CPU,資料庫伺服器需要快速 ...
  • 初始階段的網站一般訪問量都很小(QPS<500),此時只需要一臺伺服器就足夠,應用程式,資料庫和文件都放在這一臺伺服器上。如果是.net的話,通常操作系統使用windows server,應用程式開發使用asp.net,然後應用程式部署在IIS上,資料庫使用sql server。 單機網站 單機網站 ...
  • 創建項目 創建一個空的 Web 項目,併在 Nuget 裡面添加 SignalR,jQuery UI 包,添加以後項目里包含了 jQuery,jQuery.UI ,和 SignalR 的腳本。 服務端代碼 創建 Stock 類 創建 tockTicker 和 StockTickerHub 類 添加類 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...