Dieser Artikel bietet Ihnen eine detaillierte Erklärung (Bilder und Texte) der http- und https-Protokolle in Python-Crawlern. Ich hoffe, dass er für Sie hilfreich ist .
1. HTTP-Protokoll
1. Offizielles Konzept:
HTTP-Protokoll ist die Abkürzung für Hyper Text Transfer Protocol, das zur Übertragung von Daten vom Transport verwendet wird Protokoll, das von Servern des World Wide Web (WWW: World Wide Web) verwendet wird, um Hypertext an lokale Browser zu übertragen. (Obwohl die Kinder auf dieses Konzept herabschauen, können sie nichts dagegen tun. Schließlich ist dies die maßgebliche und offizielle konzeptionelle Erklärung von HTTP. Wenn Sie es vollständig verstehen möchten, richten Sie bitte Ihren Blick nach unten ...)
2. Umgangssprachliches Konzept:
Das HTTP-Protokoll ist eine Form der Dateninteraktion (gegenseitige Übertragung von Daten) zwischen dem Server (Server) und dem Client (Client). Wir können Server und Client verkörpern, dann ist dieses Protokoll eine bestimmte interaktive Kommunikationsmethode zwischen den beiden Brüdern Server und Client.
3. Funktionsprinzip von HTTP:
Das HTTP-Protokoll funktioniert auf einer Client-Server-Architektur. Als HTTP-Client sendet der Browser alle Anfragen über die URL an den HTTP-Server, also den WEB-Server. Der Webserver sendet Antwortinformationen basierend auf der empfangenen Anfrage an den Client.
> 4. Vier Punkte, die Sie zu HTTP beachten sollten: - HTTP ermöglicht die Übertragung jeder Art von Datenobjekt. Der zu übertragende Typ wird durch Content-Type gekennzeichnet. - HTTP ist verbindungslos: verbindungslos bedeutet, dass jede Verbindung nur eine Anfrage verarbeiten kann. Nachdem der Server die Anfrage des Clients verarbeitet und die Antwort des Clients empfangen hat, wird die Verbindung getrennt. Diese Methode spart Übertragungszeit. – HTTP ist medienunabhängig: Das bedeutet, dass jede Art von Daten über HTTP gesendet werden kann, solange Client und Server wissen, wie sie mit dem Dateninhalt umgehen sollen. Clients und Server geben den entsprechenden zu verwendenden MIME-Inhaltstyp an. - HTTP ist zustandslos: Das HTTP-Protokoll ist ein zustandsloses Protokoll. Zustandslos bedeutet, dass das Protokoll über keine Speicherkapazität für die Transaktionsverarbeitung verfügt. Das Fehlen eines Status bedeutet, dass, wenn für die nachfolgende Verarbeitung die vorherigen Informationen erforderlich sind, diese erneut übertragen werden müssen, was zu einer Erhöhung der pro Verbindung übertragenen Datenmenge führen kann. Andererseits reagiert der Server schneller, wenn er keine vorherigen Informationen benötigt.
5.HTTP-URL:
HTTP verwendet Uniform Resource Identifier (URI), um Daten zu übertragen und Verbindungen herzustellen. URL ist ein spezieller URI-Typ, der genügend Informationen enthält, um eine Ressource zu finden
URL, der vollständige Name lautet UniformResourceLocator, der auf Chinesisch Uniform Resource Locator heißt und zur Identifizierung einer bestimmten Ressource im Internet verwendet wird. Adresse. Nehmen Sie die folgende URL als Beispiel, um die Komponenten einer normalen URL vorzustellen: http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name Wie aus dem Obigen ersichtlich ist URL, eine vollständige URL enthält die folgenden Teile:
-Protokollteil: Der Protokollteil der URL ist „http:“, was bedeutet, dass die Webseite das HTTP-Protokoll verwendet. Im Internet können verschiedene Protokolle verwendet werden, wie zum Beispiel HTTP, FTP usw. In diesem Beispiel wird das HTTP-Protokoll verwendet. Das „//“ nach „HTTP“ ist das Trennzeichen
- Domänennamensteil: Der Domänennamensteil der URL ist „www.aspxfans.com“. In einer URL können Sie auch die IP-Adresse als Domänennamen verwenden.
-Port-Teil: Nach dem Domänennamen steht der Port, und „:“ wird als Trennzeichen zwischen dem Domänennamen und dem Port verwendet. Der Port ist kein notwendiger Teil einer URL. Wenn der Portteil weggelassen wird, wird der Standardport verwendet
- Virtueller Verzeichnisteil: Beginnend vom ersten „/“ nach dem Domänennamen bis zum letzten „ /“, es ist der virtuelle Verzeichnisteil. Das virtuelle Verzeichnis ist auch kein erforderlicher Teil einer URL. Das virtuelle Verzeichnis in diesem Beispiel ist „/news/“
– Der Dateinamensteil: beginnend mit dem letzten „/“ nach dem Domänennamen und endend mit „?“, ist es der Dateinamensteil Es gibt kein „?“, es beginnt mit dem letzten „/“ nach dem Domänennamen und endet mit „#“, dem Dateiteil. Wenn es kein „?“ und kein „#“ gibt, beginnt es mit dem letzten „/“ nach dem Domänennamen und endet mit dem Dateinamen. Der Dateiname in diesem Beispiel ist „index.asp“. Der Dateinamensteil ist kein notwendiger Teil einer URL. Wenn dieser Teil weggelassen wird, sind der Standarddateiname
-Ankerteil: beginnend mit „#“ bis zum Ende die Ankerteile. Der Ankerteil ist in diesem Fall „Name“. Der Ankerteil ist auch kein notwendiger Teil einer URL
- Parameterteil: Der Teil, der von „?“ bis „#“ beginnt, ist der Parameterteil, auch bekannt als Suchteil und Abfrageteil. Der Parameterteil in diesem Beispiel ist „boardID=5&ID=24618&page=1“. Parameter können mehrere Parameter zulassen und „&“ wird als Trennzeichen zwischen Parametern verwendet.
6. HTTP-Anfrage:
Die Anforderungsnachricht, in der der Client eine HTTP-Anfrage an den Server sendet, enthält die folgenden Komponenten:
Nachrichtenheader: Der Anforderungsheader wird oft als Anforderungsheader bezeichnet und speichert einige Hauptbeschreibungen der Anforderung (Selbsteinführung). Der Server erhält die Informationen des Clients entsprechend.
Gemeinsame Anforderungsheader:
accept: Der Browser teilt dem Server über diesen Header mit, welche Datentypen er unterstützt
Accept-Charset: Der Browser teilt dem Server über diesen Header mit, Welchen Zeichensatz er unterstützt
Accept-Encoding: Der Browser teilt dem Server über diesen Header das unterstützte Komprimierungsformat mit
Accept-Language: Der Browser teilt dem Server über diesen Header sein Gebietsschema mit
Host: Der Browser teilt dem Server über diesen Header mit, auf welchen Host er zugreifen möchte
If-Modified-Since: Der Browser teilt dem Server über diesen Header die Zeit zum Zwischenspeichern der Daten mit
Referer: Der Browser teilt dem Server über diesen Header mit, dass die Client ist von welcher Seite? Anti-Leeching
Verbindung: Der Browser teilt dem Server über diesen Header mit, ob die Verbindung getrennt oder beibehalten werden soll, nachdem die Anforderung abgeschlossen ist
🎜>
Statuscode: Teilen Sie dem Kunden das Bearbeitungsergebnis dieser Anfrage in „klarer und eindeutiger“ Sprache mit. HTTP-Antwortstatuscode besteht aus 5 Segmenten:
2xx wurde erfolgreich verarbeitet, was im Allgemeinen bedeutet: Die Anfrage ist eingegangen, ich verstehe, was Sie wollen, die Anfrage wurde angenommen und die Verarbeitung wurde abgeschlossen 3xx leitet an andere Orte weiter. Dadurch kann der Client eine weitere Anfrage stellen, um den gesamten Prozess abzuschließen. 4xx Wenn bei der Verarbeitung ein Fehler auftritt, liegt die Verantwortung beim Kunden. Beispielsweise fordert der Kunde eine Ressource an, die nicht vorhanden ist, der Kunde ist nicht autorisiert, der Zugriff ist verboten usw. 5xx Wenn bei der Verarbeitung ein Fehler auftritt, liegt die Verantwortung beim Server. Beispielsweise löst der Server eine Ausnahme aus, das Routing ist falsch, die HTTP-Version wird nicht unterstützt usw. Antwortheader: Anzeige der AntwortdetailsAllgemeine entsprechende Headerinformationen: Standort: Der Server verwendet diesen Header, um dem Browser mitzuteilen, wohin er springen soll
Server: Der Server verwendet diesen Header, um dem Browser das Servermodell mitzuteilen
Content-Encoding: Der Server verwendet diesen Header, um dem Browser das Komprimierungsformat der Daten mitzuteilen
Content-Length: der Server verwendet diesen Header, um dem Browser die Länge mitzuteilen der zurückgesendeten Daten
Content-Language: Der Server verwendet diesen Header, um dem Browser die Sprachumgebung mitzuteilen
Content-Type: Der Server verwendet diesen Header, um dem Browser den Typ der zurückgesendeten Daten mitzuteilen
Aktualisieren : Der Server verwendet diesen Header, um dem Browser den Zeitpunkt der Aktualisierung mitzuteilen.
Content-Disposition: Der Server verwendet diesen Header, um dem Browser mitzuteilen, dass er die Daten herunterladen soll.
Transfer-Encoding: Der Server verwendet diesen Header, um dem Browser dies mitzuteilen die Daten werden in Blöcken zurückgesendet
Läuft ab: - 1 Kontrollieren Sie den Browser, um keinen Cache zu erstellen
Cache-Kontrolle: kein Cache
Pragma: kein Cache
3. Von HTTPS verwendete Verschlüsselungstechnologie
3.1 SSL-Verschlüsselungstechnologie Die von SSL verwendete Verschlüsselungstechnologie wird „Shared-Key-Verschlüsselung“ genannt ", auch „Verschlüsselung mit symmetrischem Schlüssel“ genannt, ist diese Verschlüsselungsmethode wie folgt. Beispielsweise sendet der Client eine Nachricht an den Server. Zuerst verschlüsselt der Client die Nachricht mit einem bekannten Algorithmus, z. B. MD5- oder Base64-Verschlüsselung. A Beim Entschlüsseln verschlüsselter Informationen ist ein Schlüssel erforderlich. Der Schlüssel wird in der Mitte übergeben (der Schlüssel für die Verschlüsselung und Entschlüsselung ist derselbe) und der Schlüssel wird während der Übertragung verschlüsselt. Diese Methode scheint sicher zu sein, ist aber dennoch potenziell gefährlich. Sobald sie abgehört oder die Informationen gekapert werden, ist es möglich, den Schlüssel zu knacken und die Informationen zu entschlüsseln. Daher bestehen Sicherheitsrisiken bei der Methode der „Shared-Key-Verschlüsselung“:
3.2 Asymmetrische Schlüsselverschlüsselungstechnologie
Bei Verwendung der „asymmetrischen Verschlüsselung“ gibt es zwei Sperren: Eine wird als „privater Schlüssel“ und die andere als „öffentlicher Schlüssel“ bezeichnet. Bei Verwendung der Verschlüsselungsmethode ohne Objektverschlüsselung weist der Server den Client zunächst an, dem öffentlichen Schlüssel zu folgen Der von Ihnen angegebene Schlüssel wird verschlüsselt, und der Server empfängt die Informationen und entschlüsselt sie dann über seinen eigenen privaten Schlüssel. Dies hat den Vorteil, dass der entschlüsselte Schlüssel überhaupt nicht übertragen wird vermeidet das Risiko, als Geisel genommen zu werden. Selbst wenn der öffentliche Schlüssel von einem Lauscher erlangt wird, wird es schwierig sein, ihn zu entschlüsseln, da der Entschlüsselungsprozess die Auswertung diskreter Logarithmen erfordert, was nicht einfach zu bewerkstelligen ist. Das Folgende ist das schematische Diagramm der asymmetrischen Verschlüsselung:
Aber die asymmetrische Schlüsselverschlüsselungstechnologie weist auch die folgenden Mängel auf:
Der erste ist: Wie stellt man sicher? dass das empfangende Ende Beim Senden des öffentlichen Schlüssels an den Absender stellt der Absender sicher, dass das, was empfangen wird, das ist, was im Voraus gesendet wurde, und dass es nicht gekapert wird. Solange der Schlüssel verschickt wird, besteht die Gefahr einer Entführung.
Der zweite Grund ist: Die Effizienz der asymmetrischen Verschlüsselung ist relativ gering, die Verarbeitung ist komplexer und es gibt bestimmte Effizienzprobleme während des Kommunikationsprozesses, die sich auf die Kommunikationsgeschwindigkeit auswirken
4. https-Zertifikatsmechanismus
Wir haben oben über die Mängel der asymmetrischen Verschlüsselung gesprochen. Der erste besteht darin, dass der öffentliche Schlüssel wahrscheinlich gekapert wird. Es gibt keine Garantie dafür, dass der vom Client empfangene öffentliche Schlüssel der ausgegebene öffentliche Schlüssel ist durch den Server. Zu diesem Zeitpunkt wurde der Public-Key-Zertifikatmechanismus eingeführt. Die Zertifizierungsstelle für digitale Zertifikate ist eine Drittorganisation, der sowohl der Client als auch der Server vertrauen. Der spezifische Verbreitungsprozess des Zertifikats ist wie folgt:
1: Der Entwickler des Servers trägt den öffentlichen Schlüssel und beantragt den öffentlichen Schlüssel bei der Zertifizierungsstelle für digitale Zertifikate. Die Zertifizierungsstelle für digitale Zertifikate erkennt die Identität des Antragstellers und bestehen Sie die Prüfung. Zukünftig wird der vom Entwickler angewendete öffentliche Schlüssel digital signiert, und dann wird der signierte öffentliche Schlüssel verteilt, und der Schlüssel wird in das Zertifikat eingefügt und zusammengebunden
2: Der Server sendet dieses digitale Zertifikat an den Client. Da der Client auch die Zertifizierungsstelle erkennt, kann der Client die Authentizität des öffentlichen Schlüssels durch die digitale Signatur überprüfen das digitale Zertifikat, um sicherzustellen, dass der Server es weitergibt. Der öffentliche Schlüssel ist echt. Im Allgemeinen ist die digitale Signatur eines Zertifikats schwer zu fälschen, abhängig von der Glaubwürdigkeit der Zertifizierungsstelle. Sobald bestätigt ist, dass die Informationen korrekt sind, verschlüsselt der Client die Nachricht und sendet sie mit dem öffentlichen Schlüssel, und der Server entschlüsselt sie nach Erhalt mit seinem eigenen privaten Schlüssel.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der http- und https-Protokolle im Python-Crawler (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!