PHP 模拟登录出现有关问题
PHP 模拟登录出现问题
在网上看了一编文章模拟人人网登录,恰好现在需要用到,但是出现了 “The URL has moved here” 是什么原因啊。谢谢,代码如下:
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $login_url = 'http://passport.renren.com/PLogin.do'; $post_fields['email'] = 'xxx@gmail.com'; $post_fields['password'] = 'xxx'; $post_fields['origURL'] = 'http://www.renren.com/indexcon'; $post_fields['domain'] = 'renren.com'; //cookie文件存放在网站根目录的temp文件夹下 $cookie_file = tempnam('./temp','cookie'); $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch); curl_close($ch); //带上cookie文件,访问人人网首页 $send_url='http://home.renren.com/Home.do'; $ch = curl_init($send_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $contents = curl_exec($ch); curl_close($ch); //清理cookie文件 unlink($cookie_file); //输出人人网首页的内容 print_r($contents);
------解决方案--------------------
以下内容转贴.
这两天模拟浏览器提交登录表单,提交完成后, The URL has movedhere 。。
每次都需要点击连接后才打开登录后的主页。这并不是我想要的。
又看了一遍说明,看到参数-L
如下:-L/--location Follow Location: hints (H)
--location-trusted Follow Location: and send auth to other hosts (H)
有点冲动,感觉这就是问题的关键 :
curl --output "./rr.html" --dump-header "d_cookie01" --cookie-jar "c_cookie01" --create-dirs --location --data "email=test&password=test&autoLogin=ture&origURL=&domain=renren.com&formName=&method=&isplogin=true&submit=登录" http://www.renren.com/PLogin.do
wowowo登录后的主页下载下来了!!
仔细查看d_cookie01(包含从c_cookie01的内容,但--cookie-jar 产生的更简洁)有这么一条
Location:http://www.renren.com/callback.do?t=9d5201d04d44156fb070037e9493f5fd3&origURL=http%3A%2F%2Fwww.renren.com%2FHome.do&needNotify=false
原来每次提交登录表单后还需要跳转的,而-L 则是跟随跳转链接的。
我们也可以分成两步去做:
1.先提交表单,保存返回来的cookie
curl --output "./rr.html" --dump-header "d_cookie01" --data "email=test&password=test&autoLogin=ture&origURL=& domain=renren.com&formName=&method=&isplogin=true& submit=登录" http://www.renren.com/PLogin.do
2.在d_cookie01中找到location,然后把cookie和location一起提交
curl --output "./rr.html" --dump-header "d_cookie01" --location http://www.renren.com/callback.do?t=9d5201d04d44156fb070037e9493f5fd3&origURL=http%3A%2F%2Fwww.renren.com%2FHome.do&needNotify=false
OK,就拿到了登录后的主页。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um die Curl-Version unter Linux zu aktualisieren, können Sie die folgenden Schritte ausführen: Überprüfen Sie die aktuelle Curl-Version: Zunächst müssen Sie die im aktuellen System installierte Curl-Version ermitteln. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus: curl --version Dieser Befehl zeigt die aktuellen Informationen zur Curl-Version an. Verfügbare Curl-Version bestätigen: Bevor Sie Curl aktualisieren, müssen Sie die neueste verfügbare Version bestätigen. Sie können die offizielle Website von Curl (curl.haxx.se) oder verwandte Softwarequellen besuchen, um die neueste Version von Curl zu finden. Laden Sie den Curl-Quellcode herunter: Laden Sie mit Curl oder einem Browser die Quellcodedatei für die Curl-Version Ihrer Wahl herunter (normalerweise .tar.gz oder .tar.bz2).

PHP8.1 veröffentlicht: Einführung von Curl für die gleichzeitige Verarbeitung mehrerer Anfragen Vor kurzem hat PHP offiziell die neueste Version von PHP8.1 veröffentlicht, die eine wichtige Funktion eingeführt hat: Curl für die gleichzeitige Verarbeitung mehrerer Anfragen. Diese neue Funktion bietet Entwicklern eine effizientere und flexiblere Möglichkeit, mehrere HTTP-Anfragen zu verarbeiten und verbessert so die Leistung und das Benutzererlebnis erheblich. In früheren Versionen erforderte die Bearbeitung mehrerer Anfragen häufig die Erstellung mehrerer Curl-Ressourcen und die Verwendung von Schleifen zum Senden bzw. Empfangen von Daten. Obwohl diese Methode den Zweck erreichen kann

Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL für HTTP-Anfragen. Einführung: Bei der Webentwicklung ist es häufig erforderlich, mit APIs von Drittanbietern oder anderen Remote-Servern zu kommunizieren. Die Verwendung von cURL zum Senden von HTTP-Anfragen ist eine gängige und leistungsstarke Methode. In diesem Artikel wird erläutert, wie Sie mit PHP cURL erweitern, um HTTP-Anfragen auszuführen, und einige praktische Codebeispiele bereitstellen. 1. Vorbereitung Stellen Sie zunächst sicher, dass PHP die cURL-Erweiterung installiert hat. Zur Überprüfung können Sie php-m|grepcurl in der Befehlszeile ausführen

Cookies werden normalerweise im Cookie-Ordner des Browsers gespeichert. Wenn Sie die Cookie-Datei direkt öffnen, wird möglicherweise ein verstümmelter oder unleserlicher Inhalt angezeigt. Verwenden Sie daher am besten die von Ihrem Browser bereitgestellte Cookie-Verwaltungsoberfläche zum Anzeigen und Verwalten von Cookies.

Cookies auf Ihrem Computer werden je nach verwendetem Browser und Betriebssystem an bestimmten Orten in Ihrem Browser gespeichert: 1. Google Chrome, gespeichert unter C:\Benutzer\IhrBenutzername\AppData\Local\Google\Chrome\User Data\Default \Cookies usw.

Wie gehe ich mit der 301-Umleitung von Webseiten in PHPCurl um? Wenn Sie PHPCurl zum Senden von Netzwerkanfragen verwenden, werden Sie häufig auf den von der Webseite zurückgegebenen Statuscode 301 stoßen, der darauf hinweist, dass die Seite dauerhaft umgeleitet wurde. Um diese Situation richtig zu handhaben, müssen wir der Curl-Anfrage einige spezifische Optionen und Verarbeitungslogik hinzufügen. Im Folgenden wird detailliert beschrieben, wie mit der 301-Umleitung von Webseiten in PHPCurl umgegangen wird, und es werden spezifische Codebeispiele bereitgestellt. 301-Redirect-Verarbeitungsprinzip 301-Redirect bedeutet, dass der Server eine 30 zurückgibt

Cookies auf dem Mobiltelefon werden in der Browseranwendung des Mobilgeräts gespeichert: 1. Auf iOS-Geräten werden Cookies unter Einstellungen -> Safari -> Erweitert -> Website-Daten des Safari-Browsers gespeichert. 2. Auf Android-Geräten werden Cookies gespeichert in Einstellungen -> Site-Einstellungen -> Cookies des Chrome-Browsers usw.

Das Funktionsprinzip von Cookies besteht darin, dass der Server Cookies sendet, der Browser Cookies speichert und der Browser Cookies verarbeitet und speichert. Detaillierte Einführung: 1. Der Server sendet ein Cookie und der Server sendet einen HTTP-Antwortheader mit dem Cookie an den Browser. Dieses Cookie enthält einige Informationen, wie z. B. die Identitätsauthentifizierung des Benutzers, Präferenzen oder den Inhalt des Warenkorbs. Nachdem der Browser dieses Cookie erhalten hat, wird es auf dem Computer des Benutzers gespeichert. 2. Der Browser speichert Cookies usw.
