>  기사  >  백엔드 개발  >  Python 웹 크롤러의 HTTP 프로토콜 원리는 무엇입니까?

Python 웹 크롤러의 HTTP 프로토콜 원리는 무엇입니까?

WBOY
WBOY앞으로
2023-04-20 22:01:231729검색

HTTP 기본 원칙

이 글에서는 HTTP의 기본 원칙에 대해 자세히 알아보고 브라우저에 URL을 입력한 후 웹페이지의 콘텐츠를 가져오는 사이에 어떤 일이 일어나는지 이해하겠습니다. 이러한 내용을 이해하면 크롤러의 기본 원리를 더 잘 이해하는 데 도움이 됩니다.

URI 및 URL

여기서 먼저 URI와 URL에 대해 알아봅니다. URI의 전체 이름은 통합 리소스 식별자인 Universal Resource Identifier이고, URL의 전체 이름은 통합 리소스 위치 지정자인 Universal Resource Locator입니다. .

URL은 URI의 하위 집합입니다. 즉, 모든 URL은 URI이지만 모든 URI가 URL은 아니라는 의미입니다. 그렇다면 URL이 아닌 URI에는 Universal Resource Name을 나타내는 URN이라는 하위 클래스도 포함되어 있습니다. URN은 리소스를 찾는 방법을 지정하지 않고 리소스 이름만 지정합니다. 예를 들어 urn:isbn:0451450523은 책을 고유하게 식별할 수 있는 책의 ISBN을 지정하지만 책을 찾을 위치는 지정하지 않습니다. URL, URN 및 URI 간의 관계.

하지만 현재 인터넷에서는 URN이 거의 사용되지 않으므로 거의 모든 URI가 URL이라고 부를 수 있습니다. 저는 개인적으로 URL이라고 부릅니다.

Hypertext

다음으로, 하이퍼텍스트(hypertext)라는 개념을 더 이해해 봅시다. 브라우저에서 보는 웹페이지는 하이퍼텍스트로 구문 분석됩니다. 일련의 - 태그(예: 그림을 표시하는 img, 단락을 지정하는 p 등) 브라우저는 이러한 태그를 구문 분석한 후 우리가 일반적으로 보는 웹 페이지를 형성하며, 웹 페이지의 소스 코드 HTML을 하이퍼텍스트라고 부를 수 있습니다.

예를 들어 Taobao 홈페이지와 같은 Chrome 브라우저에서 페이지를 열고 아무 곳이나 마우스 오른쪽 버튼으로 클릭한 후 "검사"

항목을 선택하거나 단축키 F12를 직접 눌러 브라우저의 개발자 도구를 열면 다음을 볼 수 있습니다. Elements 탭에 있는 현재 웹 페이지의 소스 코드는 그림과 같이 모두 하이퍼텍스트입니다.



HTTP 및 HTTPSPython 웹 크롤러의 HTTP 프로토콜 원리는 무엇입니까?

Baidu 홈페이지에서 URL의 시작 부분에는 리소스에 액세스하는 데 필요한 프로토콜 유형인 http 또는 https가 있습니다. 때로는 모두 프로토콜 유형인 ftp, sftp 및 smb로 시작하는 URL도 볼 수 있습니다. 크롤러에서 우리가 크롤링하는 페이지는 일반적으로 http 또는 https 프로토콜을 사용합니다. 먼저 이 두 프로토콜의 의미를 이해해 보겠습니다.

HTTP의 전체 이름은 Hyper Text Transfer Protocol이고 중국어 이름은 Hyper Text Transfer Protocol입니다. HTTP 프로토콜은 하이퍼텍스트 데이터를 네트워크에서 로컬 브라우저로 전송하는 데 사용되는 전송 프로토콜로, 하이퍼텍스트 문서의 효율적이고 정확한 전송을 보장할 수 있습니다. HTTP는 World Wide Web Consortium과 IETF(Internet Engineering Task Force)가 공동으로 개발한 사양으로, 현재 HTTP1.1 버전이 널리 사용되고 있습니다.

HTTPS의 정식 명칭은 Hyper Text Transfer Protocol over Secure Socket Layer입니다. 보안을 목표로 하는 HTTP

채널입니다. 간단히 말해서 HTTP의 보안 버전, 즉 HTTP에 SSL 계층이 추가된 것입니다. HTTPS라고 합니다.

HTTPS의 보안 기반은 SSL이므로 이를 통해 전송되는 콘텐츠는 SSL로 암호화됩니다. 주요 기능은 두 가지로 나눌 수 있습니다.


데이터 전송 보안을 보장하기 위해 정보 보안 채널을 구축합니다.

  • 웹사이트의 신뢰성을 확인하세요. HTTPS를 사용하는 모든 웹사이트의 경우, 웹사이트가 인증된 후 브라우저 주소 표시줄의 잠금 표시를 클릭하면 실제 정보를 볼 수 있습니다. 보안 씰을 통해서도 확인할 수 있습니다. CA 기관에서 발행합니다.

  • 이제 점점 더 많은 웹사이트와 앱이 HTTPS 방향으로 개발되고 있습니다. 예:

Apple은 2017년 1월 1일 이전에 모든 iOS 앱에서 HTTPS 암호화를 사용하도록 강제했습니다. 그렇지 않으면 앱에서 HTTPS 암호화를 사용할 수 없습니다. 앱 스토어에 등록됩니다.
  • 2017년 1월 출시된 Chrome 56부터 Google은 HTTPS로 암호화되지 않은 URL 링크에 대한 위험 경고를 표시했습니다. 즉, 주소 표시줄의 눈에 띄는 위치에 "이 웹페이지는 안전하지 않습니다"라는 내용을 사용자에게 알리는 것입니다. .

  • Tencent WeChat Mini 프로그램의 공식 요구 사항 문서에 따르면 백엔드는 네트워크 통신에 HTTPS 요청을 사용해야 합니다. 조건을 충족하지 않는 도메인 이름과 프로토콜은 요청할 수 없습니다.

  • HTTP 요청 프로세스
브라우저에 URL을 입력하고 Enter 키를 누른 후 브라우저에서 페이지 내용을 관찰합니다. 실제로 이 과정은 브라우저가 웹사이트가 위치한 서버에 요청을 보낸 후, 웹사이트 서버가 요청을 처리하고 분석한 후 해당 응답을 반환한 다음 다시 브라우저에 전달하는 것입니다. 응답에는 페이지의 소스 코드와 기타 콘텐츠가 포함되어 있으며, 브라우저는 이를 구문 분석하여 웹페이지를 표시합니다.

여기서 클라이언트는 우리가 사용하는 PC나 모바일 브라우저를 의미하고, 서버는 우리가 방문하고 싶은 웹사이트가 위치한 서버를 의미합니다.

요청

요청은 클라이언트에서 서버로 전송되며 요청 방법(요청 방법), 요청 URL

(요청 URL), 요청 헤더(요청 헤더), 요청 본문(요청)의 4가지 부분으로 나눌 수 있습니다. 몸 ).

요청 방법

일반적인 요청 방법에는 GET과 POST라는 두 가지가 있습니다.

브라우저에 URL을 직접 입력하고 Enter를 누르면 GET 요청이 시작되고 요청 매개변수가 URL에 직접 포함됩니다. 예를 들어 Baidu에서 Python을 검색하는 것은 https://www baidu.com/ 링크가 포함된 GET 요청입니다. URL에는 요청의 매개변수 정보가 포함되어 있습니다. 여기서 매개변수 wd는 검색할 키워드를 나타냅니다. POST 요청은 대부분 양식이 제출될 때 시작됩니다. 예를 들어, 로그인 양식의 경우 사용자 이름과 비밀번호를 입력한 후 "로그인" 버튼을 클릭하면 일반적으로 POST 요청이 시작되며 데이터는 일반적으로 양식 형식으로 전송되며 URL에는 반영되지 않습니다.

GET 요청 방식과 POST 요청 방식의 차이점은 다음과 같습니다.

  • GET 요청의 매개변수는 URL에 포함되며, 데이터는 URL에서 볼 수 있지만 POST 요청의 URL은 그렇지 않습니다. 이러한 데이터를 포함하며 데이터는 모두 양식을 통해 전달됩니다. 양식으로 전송되면 요청 본문에 포함됩니다.

  • GET 요청으로 제출된 데이터는 최대 1024바이트에 불과하지만 POST 메서드에는 제한이 없습니다.

일반적으로 로그인 시 사용자 이름과 비밀번호를 제출해야 하는데, 이는 민감한 정보가 포함되어 있으므로 GET을 사용하여 요청하면 URL에 비밀번호가 노출되어 비밀번호 유출이 발생하므로, 가급적 POST로 보내세요. 파일을 업로드할 때 파일 내용이 상대적으로 크기 때문에 POST 방식도 사용됩니다.

우리가 일반적으로 접하는 대부분의 요청은 GET, HEAD,
POST, PUT, DELETE, OPTIONS, CONNECT, TRACE 등과 같은 일부 요청 방법도 있습니다.

  • 요청 URL

请求的网址,即统一资源定 位符URL,它可以唯一确定 我们想请求的资源。
  • 요청 헤더

请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie . Referer. User-Agent等。
  • 요청 본문

请求体一般承载的内容是 POST请求中的表单数据,而对于GET请求,请求体则为空。
Response

응답은 분할 가능 세 부분으로: 응답 상태 코드. 응답 헤더 및 응답 본문.

  • 응답 상태 코드

响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表
服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则
证明成功返回数据,再进行进一步的处理, 否则直接忽略。
  • 응답 헤더

响应头包含了服务器对请求的应答信息,如Content-Type、Server、 Set-Cookie 等。
  • 응답 본문

最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体
就是网页的HTML代码;请求- -张图片时 ,它的响应体就是图片的二进制数据。我们做爬虫请
求网页后,要解析的内容就是响应体.

위 내용은 Python 웹 크롤러의 HTTP 프로토콜 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제