Maison > développement back-end > tutoriel php > Comment se connecter à des sites Web avec SSL et cookies en utilisant Curl ?

Comment se connecter à des sites Web avec SSL et cookies en utilisant Curl ?

Patricia Arquette
Libérer: 2024-11-10 01:46:03
original
384 Les gens l'ont consulté

How to Log In to Websites with SSL and Cookies Using Curl?

Comment se connecter avec Curl en utilisant SSL et les cookies

Problème :

Connexion à un site Web utilisant Curl, en particulier barnesandnoble.com, ne réussit pas. La page est renvoyée sans erreur, mais le champ email est rempli avec l'email initial saisi. La modification de l'URL de connexion vers un site Web non HTTPS (c'est-à-dire eBay) permet une connexion réussie.

Cause :

Les causes potentielles incluent :

  • Différences dans la gestion des cookies et _state entre les sites Web ASP/ASPX et l'approche utilisée par Curl
  • Manque de paramètres d'URL codés en urlen pour l'e-mail et le mot de passe dans la chaîne de publication
  • Gestion incorrecte du "x " valeur dans l'URL de connexion

Solution :

Le code suivant résout ces problèmes et démontre une connexion réussie à l'aide de Curl, SSL et des cookies :

</p>
<p>//...<br>// Options de boucle précédentes omises par souci de concision<br>//...</p>
<p>// Obtenir les champs du formulaire<br>$fields = getFormFields($content);</p>
<p>// Définir l'e-mail et le mot de passe<br>$fields['emailAddress'] = $EMAIL;<br>$fields['acctPassword'] = $PASSWORD; </p>
<p>// Obtenir la valeur x<br>if (preg_match('/op.asp?x=(d )/i', $content, $match)) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$x = $match[1];
Copier après la connexion

>

// Définir l'URL de connexion avec la valeur x
$LOGINURL = "https://cart2.barnesandnoble.com/mobileacct/op.asp?x=$x";

// Définir les champs POST
$POSTFIELDS = http_build_query($fields);

// Changer l'URL pour l'URL de connexion
curl_setopt($ch, CURLOPT_URL, $LOGINURL);

// Définir les options de publication
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);

// Effectuer la connexion
$result = curl_exec( $ch);

imprimer $result;

//...

Explication :

  • getFormFields() : extrait les entrées masquées du formulaire de connexion.
  • Définir l'e-mail et le mot de passe : définit les valeurs d'e-mail et de mot de passe appropriées.
  • Obtenir la valeur x : récupère la valeur "x" de l'URL de connexion pour l'utiliser dans l'URL de connexion correcte.
  • Définir l'URL de connexion avec la valeur x : construit la Corrigez l'URL de connexion en utilisant la valeur "x" obtenue.
  • Définissez les champs POST : convertit les champs du formulaire en une chaîne de requête pour le POST.
  • Changez l'URL en URL de connexion et définition des options de publication : configure le handle Curl pour la demande de connexion.
  • Effectuer la connexion : exécute la demande de connexion.

En implémentant Ces changements, Curl peut se connecter avec succès malgré l'utilisation de HTTPS et les différences potentielles dans la gestion des cookies.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal