Wget
如何在不使用 CURL 的情況下執行 HTTP 請求
我有基於 ARM cpu 的 BusyBox v1.8.1(嵌入式 Linux),二進製文件有限。如何在不使用 curl 的情況下進行 http post 或 put?我有 wget 可用:
# wget BusyBox v1.8.1 (2015-04-06 16:22:12 IDT) multi-call binary Usage: wget [-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file] [--header 'header: value'] [-Y|--proxy on/off] [-P DIR] [-U|--user-agent agent] url Retrieve files via HTTP or FTP Options: -s Spider mode - only check file existence -c Continue retrieval of aborted transfer -q Quiet -P Set directory prefix to DIR -O Save to filename ('-' for stdout) -U Adjust 'User-Agent' field -Y Use proxy ('on' or 'off')
處理器資訊…
# cat /proc/cpuinfo Processor : ARM926EJ-S rev 1 (v5l)
很大程度上取決於您的busybox和其他命令中的內容。我不認為你的限制
wget
可以使用;然而,一個簡單的POST 請求可以只用一個 來模擬cat
,前提是你可以打開一個套接字,例如用nc
(netcat, socat),telnet
,或者甚至用一個完整版本的bash
,因為它可以進行連接,如下所示:在另一台機器上,使用
curl
來執行請求,並複制它寫入的所有數據。例如:curl --trace-ascii - -0 -d var=val http://localhost/~meuh/dump.cgi
這顯示在它發送的 curl 跟踪輸出中:
POST /~meuh/dump.cgi HTTP/1.0 User-Agent: curl/7.37.0 Host: localhost Accept: */* Content-Length: 7 Content-Type: application/x-www-form-urlencoded var=val
如果你把它放在一個文件中,你可以重現 POST,例如用 bash 腳本Google:
#!/bin/bash exec 5<>/dev/tcp/www.google.com/80 cat mypostfile >&5 cat <&5 # reply
這可能只適用於小數據,以及對行尾不太挑剔的伺服器
\r\n
,但對你來說可能就足夠了。