Mit der Entwicklung des Internets benötigen immer mehr Websites eine Anmeldung, um auf ihre Daten zugreifen zu können. Dies wird für einige Programmierer oder Forscher, die diese Daten verwenden müssen, zu einer Herausforderung. In diesem Artikel erfahren Sie, wie Sie mit PHP die Anmeldung simulieren und Websites crawlen, für deren Zugriff eine Anmeldung erforderlich ist.
Was ist eine simulierte Anmeldung?
Anmeldung simulieren bedeutet, sich nicht manuell über einen Browser anzumelden, sondern den Anmeldevorgang mithilfe eines Codes zu simulieren, um die Daten nach der Anmeldung abzurufen. Dies kann in Situationen, in denen ein häufiger Anmeldezugriff erforderlich ist, viel Zeit und Mühe sparen.
Schritte zum Simulieren der Anmeldung mit PHP
Bevor wir mit der Simulation der Anmeldung mit PHP beginnen, müssen wir einige grundlegende Konzepte und Schritte verstehen.
Zuerst müssen wir die URL-Adresse der Anmeldeseite abrufen. Wir können die Entwicklertools des Browsers verwenden, um die Aktions- und Methodenattribute des Anmeldeformulars anzuzeigen. Diese Attribute teilen uns das Ziel und die Methode der Formularübermittlung mit. Wir können auch direkt im Browser auf die Anmeldeseite zugreifen und dann relevante Informationen zum Anmeldeformular erhalten, indem wir den Quellcode der Seite anzeigen.
Als nächstes müssen wir jedes Feld im Anmeldeformular analysieren. Indem wir uns das Namensattribut des Formularelements ansehen, können wir bestimmen, welche Daten im Formular übermittelt werden müssen. Um uns erfolgreich anzumelden, müssen wir die Felder, die übermittelt werden müssen, und die entsprechenden Werte eindeutig identifizieren.
Bevor wir das Anmeldeformular absenden, müssen wir eine HTTP-Anfrage erstellen. Wir können die Curl-Funktion von PHP verwenden, um zu simulieren, dass der Browser eine HTTP-Anfrage sendet, und gleichzeitig die Anmeldeformulardaten als POST-Parameter an den Server übergeben. Hier müssen wir auf einige spezielle Anforderungsheaderinformationen achten, z. B. User-Agent und Referer.
Abschließend müssen wir überprüfen, ob die Anmeldung erfolgreich war. Ob die Anmeldung erfolgreich war, können Sie anhand des HTTP-Antwortcodes feststellen. Im Allgemeinen gibt der Server bei erfolgreicher Anmeldung den Statuscode 302 zurück und leitet zu der Seite weiter, auf die wir zugreifen möchten. Wenn die Anmeldung fehlschlägt, gibt der Server den Statuscode 401 (nicht autorisiert) oder 403 (verboten) zurück.
Spezifische Operationen
Mit dem Verständnis der oben genannten Grundkonzepte können wir mit der eigentlichen Operation beginnen.
Nehmen wir als Beispiel die Zhihu-Website. Zuerst müssen wir die URL der Anmeldeseite abrufen.
$url = 'https://www.zhihu.com/signin';
Als nächstes müssen wir Zhihus Anmeldeformular analysieren. Sie können das Namensattribut des Formularelements über die Browser-Entwicklertools anzeigen.
<input type="text" name="username" /> <input type="password" name="password" /> <input type="hidden" name="_xsrf" value="xxxxxx" />
Anhand des obigen Codes können wir erkennen, dass die Felder, die im Anmeldeformular übermittelt werden müssen, Benutzernamen und Passwort sowie eine zufällige Zeichenfolge _xsrf umfassen. Diese zufällige Zeichenfolge wird hinzugefügt, um CSRF-Angriffe zu verhindern.
Mit den oben genannten Informationen können wir eine HTTP-Anfrage erstellen, um den Anmeldevorgang zu simulieren.
$url = 'https://www.zhihu.com/login/phone_num'; $data = array( 'phone_num' => 'your_phone_number', 'password' => 'your_password', '_xsrf' => 'xxxxxx' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36', 'Referer: https://www.zhihu.com/signin' )); $response = curl_exec($ch); curl_close($ch); echo $response;
Im obigen Code verwenden wir die Curl-Funktion, um eine POST-Anfrage zu erstellen, einschließlich der zu übermittelnden Daten, Anforderungsheader-Informationen und Cookie-Informationen. Unter anderem werden COOKIEJAR und COOKIEFILE verwendet, um unsere Cookie-Informationen für die spätere Verwendung beim Zugriff auf Seiten zu speichern, die eine Anmeldung erfordern. Informationen zur Verschleierung des HTTP-Anforderungsheaders finden Sie in den Entwicklertools.
Wenn die Anmeldung erfolgreich ist, sollte uns der Server zur Startseite oder anderen Seiten umleiten, für deren Zugriff eine Anmeldung erforderlich ist. Ob die Anmeldung erfolgreich war, können wir anhand des HTTP-Antwortcodes feststellen.
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($http_code == 302) { echo '登录成功!'; } else { echo '登录失败!'; }
Zusammenfassung
In diesem Artikel wird erläutert, wie Sie mit PHP die Anmeldung simulieren und Websites crawlen, für deren Zugriff eine Anmeldung erforderlich ist. Es ist zu beachten, dass bei der simulierten Anmeldung einige Risiken bestehen, z. B. Datenschutzverlust, blockierte IP usw. Daher müssen wir bei der Verwendung die Crawler-Strategie der Zielwebsite vollständig verstehen, die relevanten Gesetze und Vorschriften einhalten und unsere eigene Privatsphäre und Rechte schützen.
Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP, um die Anmeldung zu simulieren und Websites zu crawlen, für deren Zugriff eine Anmeldung erforderlich ist.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!