Wget

如何在不使用 CURL 的情況下執行 HTTP 請求

  • March 23, 2018

我有基於 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,但對你來說可能就足夠了。

引用自:https://unix.stackexchange.com/questions/234077