소켓이있는 Python GET 요청-400 잘못된 요청

VictorVH

파이썬 소켓 만 사용하여 수동으로 GET 요청을 만들기 위해이 코드를 작성했습니다. 내가 작성했을 때 2016에서 완벽하게 작동했지만 이제 다시 필요하며 오류 코드 400 잘못된 요청이 계속 나타납니다. 파이썬 버전 전환을 시도했지만 여전히 동일합니다. 나는 Stackoverflow 질문을 통해 내가하는 것과 거의 똑같은 것을 묻고 있었지만 작동하도록 할 수 없습니다. 누군가 나를 도울 수 있다면 감사하겠습니다. 내 코드는 다음과 같습니다. 모든 IO를 제거하고 네트워킹 코드 만 게시했습니다.

URL_PATTERN = re.compile("^(.*://)?([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$")
HEADER_END = re.compile("\r\n\r\n")

URL_DATA = re.match(URL_PATTERN, INPUT_URL)
PROTOCOL = URL_DATA.groups()[0][:-3]
HOSTNAME = URL_DATA.groups()[1]
PATHNAME = URL_DATA.groups()[3] if URL_DATA.groups()[3] != "" else "/"
PORT = 80 if PROTOCOL == "http" else 443
BUFFER_SIZE = 4096

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOSTNAME, PORT))

s.send("GET " + PATHNAME + " HTTP/1.1\r\nHost: " + HOSTNAME + "\r\nConnection: close\r\n\r\n")

resp = s.recv(BUFFER_SIZE)
HEADER_INDEX = re.search(HEADER_END, resp).start()
HTTP_RESPONSE_HEADER = resp[:HEADER_INDEX]

s.close()

URL https://doc.rust-lang.org/book/2018-edition/foreword.html 에서 프로그램을 실행할 때

내 프로그램의 변수에는 다음과 같은 값이 있습니다.

포트 : 443

프로토콜 : https

호스트 이름 : doc.rust-lang.org

경로 이름 : /book/2018-edition/foreword.html

그런 다음 400 개의 잘못된 요청 코드를 다시받습니다. 내가 뭘 잘못하고 있는지 이해가 안되며 도움을받을 수 있으면 감사하겠습니다.

olin000

SSL에 관한 모든 것입니다. 참고로이 질문을 확인할 수 있습니다. Python socket server handle HTTPS request .

다음을 사용하는 것이 좋습니다.

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

보안 소켓을 만듭니다.

s_sock = context.wrap_socket(s, server_hostname=HOSTNAME)
s_sock.connect((HOSTNAME, PORT))

또한 메시지를 인코딩해야 할 수도 있습니다.

마지막에 코드는 다음과 같이 보일 수 있습니다.

import re
import socket
import ssl

URL_PATTERN = re.compile("^(.*://)?([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$")
HEADER_END = re.compile("\r\n\r\n")

INPUT_URL = "https://doc.rust-lang.org/book/2018-edition/foreword.html"

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

URL_DATA = re.match(URL_PATTERN, INPUT_URL)
PROTOCOL = URL_DATA.groups()[0][:-3]
HOSTNAME = URL_DATA.groups()[1]
PATHNAME = URL_DATA.groups()[3] if URL_DATA.groups()[3] != "" else "/"
PORT = 80 if PROTOCOL == "http" else 443
BUFFER_SIZE = 4096

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s_sock = context.wrap_socket(s, server_hostname=HOSTNAME)
s_sock.connect((HOSTNAME, PORT))

message = "GET " + PATHNAME + " HTTP/1.1\r\nHost: " + HOSTNAME + "\r\nConnection: close\r\n\r\n"
s_sock.send(message.encode('utf-8'))

resp = bytearray()
while True:
    part = s_sock.recv(BUFFER_SIZE)
    if not part:
        break
    resp += part

s_sock.close()

resp_string = str(resp, 'utf-8')
HEADER_INDEX = re.search(HEADER_END, resp_string).start()
HTTP_RESPONSE_HEADER = resp_string[:HEADER_INDEX]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 소켓 GET 요청으로 400 잘못된 요청 오류 받기

분류에서Dev

Python 요청 POST-400-Python 요청이있는 잘못된 요청

분류에서Dev

S3 GET 요청시 400 잘못된 요청 수신

분류에서Dev

Python 400으로 POST 요청 잘못된 요청

분류에서Dev

파이썬 소켓 잘못된 요청 400

분류에서Dev

AJAX : 400 잘못된 요청

분류에서Dev

$ .ajax 400 잘못된 요청

분류에서Dev

Angularjs 잘못된 요청 (400)

분류에서Dev

Guzzle 400 잘못된 요청

분류에서Dev

요청 라이브러리의 잘못된 요청 오류 400

분류에서Dev

HTTP GET이 400 개의 잘못된 요청을 제공합니다 (telnet, arduino).

분류에서Dev

Nginx, AWS, EB, Docker, TCP 소켓 구성 400 잘못된 요청

분류에서Dev

Python 요청 오류 400 브라우저가 잘못된 요청을 보냄

분류에서Dev

400 잘못된 요청, 잘 작동하는 localhost

분류에서Dev

jquery $ .get flask 함수 / route 400 잘못된 요청

분류에서Dev

Java 소켓이 HTTP / 1.1 400 잘못된 요청을받습니다.

분류에서Dev

Rails API가있는 Angularjs는 400 게시 (잘못된 요청)

분류에서Dev

Python 3에서 소켓을 사용하여 400 잘못된 요청 오류 받기

분류에서Dev

Flutter에서 ASP.Net Core 3.0을 요청하는 잘못된 요청 400

분류에서Dev

오류 : 400 : 잘못된 요청 : 요청에 사진이 없습니다.

분류에서Dev

IdentityServer3 ResourceOwner Angular 요청이 400 잘못된 요청을 반환합니다.

분류에서Dev

urllib2.HTTPError : HTTP 오류 400 : 잘못된 요청-Python

분류에서Dev

각도가있는 Paypal API | 400 잘못된 요청)

분류에서Dev

Python Flask 잘못된 요청

분류에서Dev

잘못된 요청 소켓 파이썬

분류에서Dev

HTTP 오류 400 : Python에서 Facebook의 게시물 좋아요를 가져 오는 데 대한 잘못된 요청

분류에서Dev

개체 속성이 잘못된 경우 WCF (400) 잘못된 요청

분류에서Dev

gunicorn 및 nginx로 실행되는 django : 400 잘못된 요청

분류에서Dev

변수에서 400 잘못된 요청을 얻는 방법

Related 관련 기사

  1. 1

    Python 소켓 GET 요청으로 400 잘못된 요청 오류 받기

  2. 2

    Python 요청 POST-400-Python 요청이있는 잘못된 요청

  3. 3

    S3 GET 요청시 400 잘못된 요청 수신

  4. 4

    Python 400으로 POST 요청 잘못된 요청

  5. 5

    파이썬 소켓 잘못된 요청 400

  6. 6

    AJAX : 400 잘못된 요청

  7. 7

    $ .ajax 400 잘못된 요청

  8. 8

    Angularjs 잘못된 요청 (400)

  9. 9

    Guzzle 400 잘못된 요청

  10. 10

    요청 라이브러리의 잘못된 요청 오류 400

  11. 11

    HTTP GET이 400 개의 잘못된 요청을 제공합니다 (telnet, arduino).

  12. 12

    Nginx, AWS, EB, Docker, TCP 소켓 구성 400 잘못된 요청

  13. 13

    Python 요청 오류 400 브라우저가 잘못된 요청을 보냄

  14. 14

    400 잘못된 요청, 잘 작동하는 localhost

  15. 15

    jquery $ .get flask 함수 / route 400 잘못된 요청

  16. 16

    Java 소켓이 HTTP / 1.1 400 잘못된 요청을받습니다.

  17. 17

    Rails API가있는 Angularjs는 400 게시 (잘못된 요청)

  18. 18

    Python 3에서 소켓을 사용하여 400 잘못된 요청 오류 받기

  19. 19

    Flutter에서 ASP.Net Core 3.0을 요청하는 잘못된 요청 400

  20. 20

    오류 : 400 : 잘못된 요청 : 요청에 사진이 없습니다.

  21. 21

    IdentityServer3 ResourceOwner Angular 요청이 400 잘못된 요청을 반환합니다.

  22. 22

    urllib2.HTTPError : HTTP 오류 400 : 잘못된 요청-Python

  23. 23

    각도가있는 Paypal API | 400 잘못된 요청)

  24. 24

    Python Flask 잘못된 요청

  25. 25

    잘못된 요청 소켓 파이썬

  26. 26

    HTTP 오류 400 : Python에서 Facebook의 게시물 좋아요를 가져 오는 데 대한 잘못된 요청

  27. 27

    개체 속성이 잘못된 경우 WCF (400) 잘못된 요청

  28. 28

    gunicorn 및 nginx로 실행되는 django : 400 잘못된 요청

  29. 29

    변수에서 400 잘못된 요청을 얻는 방법

뜨겁다태그

보관