1. 程式人生 > >Linux下使用CURL模擬使用者提交post表單

Linux下使用CURL模擬使用者提交post表單

本文介紹在Linux下使用CURL命令提交post請求,在需要手動重複提交post表單時,使用本文介紹的方法可以達到事半功倍的效果。

事情是這樣的:在只能藉助以下的運維介面的情況下,要通過此介面提供的入口查詢一批關鍵詞。

這裡寫圖片描述

關鍵詞的格式是msgtype:xx,待查詢的xx有幾千條,在現場工程環境下,不知道任何相關的後臺介面,如果沒有合適的辦法,那麼只能一條條的手動查詢,輸入一個xx,然後點選確定進行檢索。這是非常低效率的,也是非常痛苦的。

當這個問題拋到我這兒的時候,我想一定得想個辦法,實現自動化的查詢。經過一番思考後,想到了C++常用的Curl庫,如果可以將介面下發的查詢請求拼接成url,然後藉助curl庫,提交這個請求,接收並解析返回的響應,那不就可以實現自動的查找了嗎?事實上,這是可以的,下文的思路也是基於此,但是下文中並不是使用C++的curl庫來實現提交post請求。而是藉助Linux的curl命令,這時只要幾行指令碼,就可以實現了,但是要確保安裝了Linux下curl命令是可用的。

Curl命令提交post請求,簡介:
通過指令碼傳送post請求:
curl -d {Request parameter} {Request URL}

通過指令碼傳送post請求,順便附帶文字資料,比如通過瀏覽選擇本地的post.txt並上傳發送post請求
curl -F “[email protected];type=text/plain” {post請求的url}

現在要解決的是怎樣獲得post請求的實際引數,以及請求的實際地址了!
在Chrome瀏覽器下按下F12(或者選項 更多工具->開發者工具),不妨通過上述介面下發一個請求,然後再Network標籤中找到該POST請求,並點選進入檢視請求的詳情(在此,僅列出主要引數):

Remote Address:192.168.XX.XX:8088
Request URL:http://192.168.XX.XX:8088/search  //這是本次post請求的實際地址
Request Method:POST
Status Code:200 OK

Response Headers
view source
Content-Type:application/json;charset=UTF-8
...


Request Headers
view source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
...
//以下是本次下發請求的主要引數 queryWord:msgtype:1 similarText: startTime:2017-03-30 19:27:33 endTime:2017-04-03 19:27:33

據此,這條請求如果使用curl提交的話,應該為:
因此 curl命令的相關引數為
curl –d “queryWord=msgtype:1&startTime=t1&endTime=t2” “http:// 192.168.XX.XX:8088/search”
t1對應於startTime:2017-03-30 19:27:33的絕對秒(自行轉換)
t2對應於endTime:2017-04-03 19:27:33的絕對秒

那麼實踐中只要使用指令碼將msgtype後面跟的引數替換為其他訊息型別即可實現”自動化”提交表單了,至於返回的json格式的結果,可以暫存,並不做解析,因為解析返回的響應並不是這兒的重點。(shell指令碼只要不到10行就可以完成,將這些請求引數以行為單位存到文字中,按行讀取文字,替換msgtype後的引數值)

在實際中遇到這種單調重複的問題還是要多想辦法!不到萬不得已,不使用蠻力!

相關推薦

Linux使用CURL模擬使用者提交post

本文介紹在Linux下使用CURL命令提交post請求,在需要手動重複提交post表單時,使用本文介紹的方法可以達到事半功倍的效果。 事情是這樣的:在只能藉助以下的運維介面的情況下,要通過此介面提供的入口查詢一批關鍵詞。 關鍵詞的格式是msgtype:x

Linuxcurl模擬帶header的Http請求

curl -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-E

回車默認提交form問題

data method 新頁面 div 開發 multipart 一個 spl form表單 最近開發中碰到一個問題,項目中有幾個列表展示頁面,允許用戶通過查詢條件模糊查詢數據。用戶錄入關鍵字後點擊回車會調用查詢方法根據關鍵字查詢,原先功能沒有問題,但是最近發現在查詢輸入框

超連結提交POST

這是我上次借鑑別人的:超連結提交表單 不過在使用的過程中出現了一些問題,提交的表單資料都是以GET的方式進行提交和進行獲取。 所以接下來分享下使用POST方式並且是超連結的方式來提交表單。 <form name="form1" method=

php CURL模擬GET、POST請求。

/** * get * @param string $url 請求地址 */ function GetHttp($url){ // 關閉控制代碼 $curl = curl_init(); // 啟動一個CURL會話 curl_setopt($curl, CURLOPT_URL, $url); curl_set

使用httpClient模擬提交部件

使用httpClient模擬提交多表單部件 在pom.xml加入對httpclient的必需的jar包的依賴<dependency> <groupId>org.apache.httpcomponents</groupId> <ar

curl post上傳檔案(C++)

最近測試如何上傳檔案到伺服器。原來傳照片一致通過binary 形式傳檔案,或者把圖片base64編碼傳圖片。一致沒有用form-data 表單形式傳送資料,今天嘗試下如何使用libcurl提供的API上傳檔案。 Sample code: #include <

post提交form失敗的一個小原因

經過測試, form表單裡面的post可以是大寫也可以是小寫,這個不會影響post的成功和失敗,如下: method="post"        對的 method="POST"      對的 但是在接受的時候,只能用大寫的POST而不能用小寫的,用小寫的就會接

C語言開發Linuxweb伺服器(支援GET/POST,SSL,目錄顯示等)

這個主要是在CSAPP基礎上做的,添加了POST,SSL,目錄顯示等功能。一、實現功能:1.支援GET/POST方法2.支援SSL安全連線即HTTPS3.支援CGI4.基於IP地址和掩碼的認證5.目錄顯示6.日誌功能7.錯誤提示頁面二、設計原理首先介紹一些HTTP協議基本知識

java 後臺模擬post請求傳送key-value資料亂碼

首先是key-value的模型: public class PostValue {       private String key;           private String value;        public PostValue(String key, S

linuxcurl get方法傳遞引數

例如  url 為 http://mywebsite.com/index.php?a=1&b=2&c=3 web形式下訪問url地址,使用$_GET是可以獲取到所有的引數 然而在linux下 curl http://mywebsite.com

使用URLConnection實現post提交

首先介紹下URLConnection,         URLConnection是一個抽象類,表示指向url資源的活動連線,URLConnection有兩個不同的但相關的用途。 首先,與URL相比,他對伺服器的互動提供了更多的控制。URLConnection可以檢查伺服器

PHP中使用CURL模擬傳送GET,POST,PUT,DELETE請求

因為最近總是用到curl來發送請求,所以就整理了以下 function curl($url,$method,$params,$auth){ //初始化CURL控制代碼 $curl = curl_init(); curl

Tomcat中對於post方法提交採用的預設編碼

轉自http://zhangyou1010.iteye.com/blog/870760 當我通過Jsp提交資料到後臺的時候,插入到資料庫,發現中文是亂碼,debug發現還沒到資料庫就已經是亂碼了,這說明 編碼的設定有問題。 檢查了下我的jsp頁面,編碼只設pageEn

Curl 模擬get、 post、put 請求以及上傳檔案

1,Curl 模擬GET請求 //初始化 $ch = curl_init(); //設定請求地址L curl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com"); //設定響應不直接輸出到頁面,1為不

Linuxcurl命令的使用

1.curl      簡單來說,curl是一個用url方式,來和伺服器進行檔案傳輸和下載的工具。它不僅僅支援Http協議,還支援了其他的眾多的協議,例如DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDA

如何用chrome檢視提交post資料

網上找了很多, 不過大多都是單純文字說明的. 很多萌新一下子可能有點摸不著頭腦. 在這裡用圖片說一下 簡單來說, 在chrome裡面按F12, 然後選擇Network--headers,然後往下拉就可以看到啦

java模擬提交form

public static void connectionUrl(String username,String password){ String url = "http://localhost:8080/aaa/bbb.action";

Linux Oracle 建立使用者和使用者空間

使用oracle 使用者登入Linux系統 su -u  oracle sqlplus 登入 [[email protected] ~]$ sqlplus / as sysdba 查看錶空間儲存目錄 SQL> select name from v$

Get和POST提交方式詳解

1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。 2、Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用“?”連線,而各個變數之間使用“&”連線;Post是將表單中的資料放在form