Skip to content

bright-data-de/http-headers-with-curl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Senden von HTTP-Headers mit cURL

Bright Data Promo

Diese Anleitung zeigt Ihnen, wie Sie HTTP-Headers mit cURL effektiv nutzen, um Ihre Datenerfassung und Ihre Fähigkeiten zur Serverkommunikation zu verbessern:

Understanding HTTP Headers

Das Hypertext Transfer Protocol (HTTP) funktioniert als zustandsloses Protokoll und folgt einer Client-Server-Architektur, bei der Clients Anfragen stellen und auf Serverantworten warten. Diese Anfragen enthalten wichtige Elemente wie HTTP-Methode, Serverstandort, Pfad, Query-Parameter und Headers.

HTTP-Headers sind im Wesentlichen Schlüssel-Wert-Paare, die Metadaten und Anweisungen zwischen Clients und Servern übertragen. Sie spielen eine entscheidende Rolle bei der Festlegung von Parametern wie Content-Type, Caching-Regeln und Authentifizierungsmethoden und stellen reibungslose und sichere Client-Server-Interaktionen sicher. Für web scraping-Operationen ermöglichen HTTP-Headers Ihnen, Anfragen anzupassen, indem Sie verschiedene User Agents simulieren, Content-Negotiation steuern und die Authentifizierung gemäß den Anforderungen und Protokollen der Website handhaben.

Typische Anwendungsfälle von HTTP-Headers beim Web-Scraping umfassen das Ändern des User-Agent (UA), das Festlegen von Antwortformaten, das Durchführen bedingter Anfragen sowie die Authentifizierung bei Application Programming Interfaces (APIs).

Getting Started with cURL Headers

Bevor Sie mit diesem Tutorial fortfahren, stellen Sie sicher, dass curl auf Ihrem System installiert ist, indem Sie diesen Befehl in Ihrem Terminal ausführen:

curl --version

Wenn es korrekt installiert ist, erhalten Sie Versionsinformationen wie diese:

curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

Wenn Fehler wie curl is not recognized as an internal or external command, operable program or batch file oder command not found auftreten, müssen Sie curl installieren.

Sie benötigen außerdem einen Dienst zum Untersuchen von Headers, wie z. B. httpbin.org, der einen unkomplizierten HTTP-Anfrage- und Antwortdienst bereitstellt.

Wenn Sie mit curl vertraut sind, erkennen Sie, dass die grundlegende Syntax diesem Muster folgt:

curl [options] [url]

Das bedeutet: Um Inhalte von mywebpage.com abzurufen, würden Sie Folgendes ausführen:

curl www.mywebpage.com

Viewing Default cURL Headers

Um die Headers zu prüfen, die curl standardmäßig mit httpbin.org sendet, führen Sie diesen Befehl aus:

curl http://httpbin.org/headers

Die Antwort zeigt die gesendeten Headers an:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd2eb0-0617353714d52f3777c9c267"
  }

Die Headers Accept, Host und User-Agent sind standardmäßig in curl-Anfragen enthalten.

Der Header Accept informiert den Server über Medientypen, die der Client verarbeiten kann. Er kommuniziert, welche Content-Types der Client akzeptiert, und erleichtert so die Content-Negotiation zwischen Client und Server.

Ein Accept-Header, der angibt, dass der Client JSON bevorzugt, sieht so aus:

Accept: application/json

Das Feld User-Agent enthält Ihre Client-Informationen, in diesem Fall die curl-Anwendung mit ihrer Versionsnummer (entsprechend Ihrer installierten Version).

Der Header Host identifiziert die spezifische Web-Domain (den Host) und die Portnummer für die HTTP-Anfrage. Wenn kein Port angegeben ist, werden Standardports angenommen (Port 80 für HTTP und Port 443 für HTTPS).

X-Amzn-Trace-Id ist kein standardmäßiger curl-Header, sondern zeigt an, dass Ihre Anfrage über einen Amazon Web Services (AWS)-Dienst geleitet wurde, wie z. B. einen AWS Load Balancer, und kann für das Tracing von HTTP-Anfragen verwendet werden.

Um zu bestätigen, welche Headers curl standardmäßig sendet, können Sie den Verbose-Modus mit dem Flag -v oder --verbose verwenden, der detaillierte Anfrage- und Antwortinformationen einschließlich Headers anzeigt.

Führen Sie diesen Befehl aus, um die Standard-curl-Headers zu sehen:

curl -v http://httpbin.org/headers

Ihre Ausgabe wird etwa so aussehen:

- Trying 50.16.63.240...
* TCP_NODELAY set
* Connected to httpbin.org (50.16.63.240) port 80 (#0)
> GET /headers HTTP/1.1
> Host: httpbin.org
> User-Agent: curl/7.55.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 22 Mar 2024 07:18:00 GMT
< Content-Type: application/json
< Content-Length: 173
< Connection: keep-alive
< Server: gunicorn/19.9.0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
<
{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd30a8-624365ad52781957578cd5b1"
  }
}
* Connection #0 to host httpbin.org left intact

Zeilen, die mit einem Größer-als-Zeichen (>) beginnen, zeigen, was Ihr Client (curl) an den Endpunkt gesendet hat, und bestätigen, dass die folgenden Headers übertragen wurden:

  • GET (HTTP-Methode) an den Endpunkt/headers
  • Host mit dem Wert httpbin.org
  • User-Agent mit dem Wert curl/7.55.1
  • Accept mit dem Wert */*

In der Ausgabe spiegeln Zeilen, die mit einem Kleiner-als-Zeichen (<) beginnen, wie z. B. < Content-Type: application/json, die Response-Headers wider.

Modifying Default Headers with -H

Das Flag -H oder --header ermöglicht es Ihnen, benutzerdefinierte Headers an den Server zu senden, und ist für Tests nützlich.

Um beispielsweise den User-Agent von curl/7.55.1 auf Your-New-User-Agent zu ändern, verwenden Sie:

curl -H "User-Agent: Your-New-User-Agent" http://httpbin.org/headers

Die Antwort zeigt:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "Your-New-User-Agent",
    "X-Amzn-Trace-Id": "Root=1-65fd5123-3ebe566a4681427c6996c72c"
  }
}

Wenn Sie den Header Accept von */* (der jeden Content-Type akzeptiert) auf application/json (der nur JSON-Content akzeptiert) ändern möchten, führen Sie Folgendes aus:

curl --header "Accept: application/json" http://httpbin.org/headers

Die Ausgabe wird sein:

{
  "headers": {
    "Accept": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd55c3-05c21f81770c1c5e6343b1fc"
  }
}

Hinweis:

In diesem Beispiel wurde --header anstelle von -H verwendet. Diese Flags sind gleichwertig und führen dieselbe Funktion aus.

Seit curl Version 7.55.0 können Sie außerdem eine Datei verwenden, die Ihre Headers enthält. Wenn Ihre Header-Datei header_file heißt, können Sie Folgendes verwenden:

curl -H @header_file

Creating Custom Headers

Benutzerdefinierte Headers sind von Entwicklern definierte Felder, die zusätzliche Informationen über Standard-HTTP-Headers hinaus bereitstellen.

Um einen benutzerdefinierten Header mit curl zu senden, verwenden Sie das Flag -H. Um beispielsweise einen benutzerdefinierten Header namens My-Custom-Header mit dem Wert Value of custom header zu senden, führen Sie Folgendes aus:

curl -H "My-Custom-Header: Value of custom header" http://httpbin.org/headers

Die Antwort wird sein:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "My-Custom-Header": "Value of custom header",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd7d2a-3b683be160ff2965023b3a31"
  }
}

Working with Empty Headers

Manchmal ist das Senden leerer Headers notwendig, z. B. wenn bestimmte API-Anforderungen bestimmte Headers selbst ohne Inhalt verlangen. Beispielsweise erzwingt der HTTP Strict Transport Security (HSTS) header sichere HTTPS-Verbindungen auf Websites. Während dieser Header typischerweise Direktiven zur HSTS-Dauer und zum Verhalten enthält, stellt das Senden mit einem leeren Wert eine sofortige HSTS-Durchsetzung sicher.

Leere Headers können außerdem verwendet werden, um zuvor gesetzte Headers zu löschen. Um einen Header zurückzusetzen oder zu leeren, der standardmäßig gesetzt wurde, kann das Senden eines leeren Headers seinen Wert effektiv entfernen.

Um einen leeren Header mit curl zu senden, geben Sie den Headernamen gefolgt von einem Semikolon an, um einen leeren Wert zu kennzeichnen. Dieser Befehl zeigt, wie Sie einen leeren benutzerdefinierten Header namens My-Custom-Header senden:

curl -H "My-Custom-Header;" http://httpbin.org/headers

Die Ausgabe zeigt My-Custom-Header mit einem leeren Wert:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "My-Custom-Header": "",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd84e2-7a42d9d62a42741e448c426f"
  }
}

Deleting Headers

Um einen Header mit curl vollständig zu entfernen, geben Sie den Headernamen gefolgt von einem Doppelpunkt ohne nachfolgenden Wert an.

Um beispielsweise den standardmäßigen User-Agent-Header zu entfernen, verwenden Sie:

curl -H "User-Agent:" http://httpbin.org/headers

Die Antwort enthält den User-Agent-Header nicht, wodurch bestätigt wird, dass er entfernt wurde:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "X-Amzn-Trace-Id": "Root=1-65fd862d-13b181583501ae11046374a1"
  }
}

Sending Multiple Headers at Once

Bisher haben wir Beispiele mit einzelnen Headers betrachtet, aber curl unterstützt das gleichzeitige Senden mehrerer Headers. Fügen Sie einfach mehrere -H-Flags in Ihren Befehl ein.

Um beispielsweise zwei Headers (Custom-Header-1 und Custom-Header-2) mit den Werten one bzw. two zu senden, führen Sie aus:

curl -H "Custom-Header-1: one" -H "Custom-Header-2: two" http://httpbin.org/headers

Die Ausgabe wird zeigen:

{
  "headers": {
    "Accept": "*/*",
    "Custom-Header-1": "one",
    "Custom-Header-2": "two",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-65fd8781-143be3502c559bc5605fc6f1"
  }
}

Summary

Dieser Artikel hat die Grundlagen von HTTP-Headers behandelt und gezeigt, wie Sie diese mit curl effektiv verwalten.

Für eine umfassende Web-Scraping-Lösung sollten Sie Bright Data in Betracht ziehen. Bright Data bietet spezialisierte Tools und Services, einschließlich proxy services, die die Anonymität erhöhen und IP-Blocking verhindern, sowie Web Unlocker, um beim Zugriff auf geografisch eingeschränkte Inhalte ohne CAPTCHAs zu helfen.

Starten Sie noch heute Ihre kostenlose Testversion!

About

Verwenden Sie HTTP-Header mit cURL, um Ihre Datenerfassung und Serverkommunikationsfähigkeiten zu verbessern

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors