IT Share you

Telnet을 사용하여 HTTP 요청을 보내는 방법

shareyou 2020. 12. 14. 21:08
반응형

Telnet을 사용하여 HTTP 요청을 보내는 방법


Telnet을 사용하여 웹 페이지의 콘텐츠를 얻는 방법은 무엇입니까?

예를 들어, https://stackoverflow.com/questions.


텔넷 ServerName 80


GET /index.html


당신은 할 수 있습니다

telnet stackoverflow.com 80

그리고 붙여 넣기

GET /questions HTTP/1.0
Host: stackoverflow.com


# add the 2 empty lines above but not this one

다음은 성적 증명서입니다.

$ telnet stackoverflow.com 80
Trying 151.101.65.69...
Connected to stackoverflow.com.
Escape character is '^]'.
GET /questions HTTP/1.0
Host: stackoverflow.com

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
...

후손에게 귀하의 질문은 http 요청을 https://stackoverflow.com/questions. 진짜 대답은 : 텔넷으로는 할 수 없는데, 이것은 https 전용 URL이기 때문입니다.

예를 들어 다음과 같이 openssl대신 사용하고 싶을 수 있습니다.telnet

$ openssl s_client -connect stackoverflow.com:443
...
---
GET /questions HTTP/1.1
Host: stackoverflow.com

그러면 https 응답이 제공됩니다.


이전 답변을 다소 확장하려면 몇 가지 합병증이 있습니다.

telnet특별히 스크립팅 할 수 없습니다. 비 터미널 입력 및 신호를 더 잘 처리하는 대신 nc(일명 netcat) 을 사용하는 것이 좋습니다.

또한, 달리 telnet, nc실제로 SSL 수 있습니다 (그래서 https대신 http트래픽을 - 당신은 포트 443 대신 포트 80 다음이 필요합니다).

HTTP 1.0과 1.1에는 차이가 있습니다. 최신 버전의 프로토콜에서는 Host:요청에 POST또는 GET뒤에 별도의 줄에 헤더를 포함 하고 요청 헤더의 끝을 표시하기 위해 빈 줄이 뒤따라야합니다.

HTTP 프로토콜에는 캐리지 리턴 / 줄 바꿈 줄 끝이 필요합니다. 많은 서버가 이에 대해 관대하지만 일부는 그렇지 않습니다. 사용하고 싶을 수도 있습니다

printf "%\r\n" \
    "GET /questions HTTP/1.1" \
    "Host: stackoverflow.com" \
    "" |
nc --ssl stackoverflow.com 443

If you fall back to HTTP/1.0 you don't always need the Host: header, but many modern servers require the header anyway; if multiple sites are hosted on the same IP address, the server doesn't know from GET /foo HTTP/1.0 whether you mean http://site1.example.com/foo or http://site2.example.net/foo if those two sites are both hosted on the same server (in the absence of a Host: header, a HTTP 1.0 server might just default to a different site than the one you want, so you don't get the contents you wanted).

The HTTPS protocol is identical to HTTP in these details; the only real difference is in how the session is set up initially.

참고URL : https://stackoverflow.com/questions/15772355/how-to-send-an-http-request-using-telnet

반응형