txt test read que print file_get_contents content all php authentication session curl file-get-contents

php - test - print file_get_contents



file_get_contents from url que solo se puede acceder después de iniciar sesión en el sitio web (2)

Me gustaría hacer un script php que pueda capturar una página de un sitio web. Piense file_get_contents ($ url) .

Sin embargo, este sitio web requiere que complete un formulario de inicio de sesión de nombre de usuario / contraseña para poder acceder a cualquier página. Me imagino que una vez que haya iniciado sesión, el sitio web envía a su navegador una cookie de autenticación y con cada solicitud de navegador consiguiente, la información de la sesión se transfiere al sitio web para autenticar el acceso.

Quiero saber cómo puedo simular este comportamiento del navegador con un script php para obtener acceso y capturar una página de este sitio web.

Más específicamente, mis preguntas son:

  1. ¿Cómo envío una solicitud que contiene mis datos de inicio de sesión para que el sitio web responda con la información de la sesión / cookie?
  2. ¿Cómo leo la información de la sesión / cookie?
  3. ¿Cómo devuelvo la información de esta sesión con cada solicitud consiguiente ( file_get_contents , curl ) al sitio web?

Gracias.



Curl es muy adecuado para hacerlo. No necesita hacer nada especial más que configurar las opciones CURLOPT_COOKIEJAR y CURLOPT_COOKIEFILE . Una vez que haya ingresado al pasar los campos de formulario desde el sitio, la cookie se guardará y Curl usará esa misma cookie para solicitudes posteriores automáticamente, como lo ilustra el siguiente ejemplo.

Tenga en cuenta que la función siguiente guarda las cookies en cookies/cookie.txt por lo que debe asegurarse de que el directorio / archivo exista y pueda escribirse.

$loginUrl = ''http://example.com/login''; //action from the login form $loginFields = array(''username''=>''user'', ''password''=>''pass''); //login form field names and values $remotePageUrl = ''http://example.com/remotepage.html''; //url of the page you want to save $login = getUrl($loginUrl, ''post'', $loginFields); //login to the site $remotePage = getUrl($remotePageUrl); //get the remote page function getUrl($url, $method='''', $vars='''') { $ch = curl_init(); if ($method == ''post'') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, ''cookies/cookies.txt''); curl_setopt($ch, CURLOPT_COOKIEFILE, ''cookies/cookies.txt''); $buffer = curl_exec($ch); curl_close($ch); return $buffer; }