CURL을 사용하지 않고 HTTP 요청을 실행하는 방법

CURL을 사용하지 않고 HTTP 요청을 실행하는 방법

제한된 바이너리가 포함된 ARM CPU 기반 BusyBox v1.8.1(내장형 Linux)이 있습니다. 컬을 사용하지 않고 http 게시 또는 넣기를 수행하는 방법은 무엇입니까? 사용 가능한 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')

CPU 정보...

# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 1 (v5l)

답변1

많은 것은 busybox 및 기타 명령의 내용에 따라 달라집니다. 나는 당신의 제한이 wget작동하지 않을 것이라고 생각합니다 .단순한POST 요청은 cat소켓을 열 수 있는 경우(예: nc (netcat, socat) telnet또는 전체 버전을 사용하여 bash다음과 같이 연결할 수 있음)를 사용하여 시뮬레이션할 수 있습니다.

curl요청을 실행하고 기록된 모든 데이터를 복사하는 다른 머신에서 . 예를 들어:

curl --trace-ascii - -0 -d var=val http://localhost/~meuh/dump.cgi

이는 보내는 컬 추적 출력에 표시됩니다.

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

예를 들어 Google에 bash 스크립트를 사용하여 파일에 넣으면 POST를 재현할 수 있습니다.

#!/bin/bash
exec 5<>/dev/tcp/www.google.com/80
cat mypostfile >&5
cat <&5 # reply

\r\n이는 줄 끝 부분에 너무 까다롭지 않은 소규모 데이터 및 서버에서만 작동할 수 있지만 사용자의 요구에 충분할 수 있습니다.

답변2

netcatBuildroot에서는 많은 도구를 사용할 수 있습니다 (http://buildroot.uclibc.org/) 그런 다음 wget장치에 다운로드하여 사용할 수 있습니다. 이것이 비슷한 상황에서 제가 하는 일입니다.

올바른 옵션을 설정하고 를 사용하여 해당 옵션에 액세스할 수 있습니다 make menuconfig. 다음 옵션 페이지가 가장 중요할 수 있습니다(일반적으로 중요한 옵션은 으로 표시했습니다 !>).

  • 표적
  │ ┌────────────────────────────────────────── ──── ───────────────────────┐ │  
!>│ │ 대상 아키텍처(FOOBAR) ---> │ │  
  │ │ 대상 바이너리 형식(ELF) ---> │ │  
!>│ │ 대상 아키텍처 변형(Gen42) ---> │ │  
  │ │ 대상 ABI(EABI) ---> │ │  
  │ │ 부동 소수점 전략(소프트 부동 소수점) ---> │ │  
  │ │ │ │  
  • 빌드 옵션
!> │ │ 라이브러리(정적 전용) ---> │ │  
  │ │ ($(CONFIG_DIR)/local.mk) 패키지 적용 범위 파일의 위치 │ │  
  │ │ () 글로벌 패치 디렉토리 │ │  
  │ │ 고급 ---> │ │  
  │ └─────────────────────────────────────────── ──── ─────────────────────────┘
  • 도구 체인
  │ ┌────────────────────────────────────────── ──── ───────────────────────┐ │  
  │ │ 툴체인 유형(Buildroot 툴체인) ---> │ │  
  │ │ (buildroot) 사용자 정의 도구 모음 공급업체 이름│ │  
  │ │ *** 커널 헤더 옵션*** │ │  
!>│ │ 커널 헤더 파일(수동으로 지정된 Linux 버전) ---> │ │  
!>│ │ (2.6.99) 리눅스 버전 │ │  
!>│ │ 사용자 정의 커널 헤더 파일 시리즈(2.6.x) ---> │ │  
  │ │ C 라이브러리(uClibc) ---> │ │  
  │ │ *** uClibc 옵션*** │ │  
!>│ │ uClibc C 라이브러리 버전(uClibc 0.9.33.x) ---> │ │  

make toolchain그런 다음 필요한 도구를 사용하여 툴체인을 구축합니다(예 make nc: .

관련 정보