Lorsque nous utilisons PHP pour les demandes de réseau, nous rencontrons souvent des situations où nous devons simuler le comportement du navigateur, en particulier le problème de vérification des codes de vérification. Les codes de vérification sont des techniques utilisées pour empêcher les programmes automatisés de soumettre des formulaires. Ils exigent généralement que les utilisateurs saisissent un caractère affiché ou cliquent sur une image spécifique pour vérifier l'identité humaine. Dans ce cas, l'utilisation de la bibliothèque Curl pour simuler le comportement du navigateur est une solution efficace.
Curl est une puissante bibliothèque PHP qui peut nous aider à envoyer des demandes HTTP aux serveurs externes, et prend en charge plusieurs protocoles tels que HTTP, HTTPS, FTP, etc. Pour les demandes qui doivent être traitées pour la vérification du code de vérification, la clé est la façon de gérer et de mettre en cache des cookies à réutiliser sur plusieurs demandes. Pour le moment, nous pouvons utiliser la fonction Curl_share_Init pour implémenter des cookies partagés, résolvant ainsi le problème de la vérification fréquente des codes de vérification.
CURL_SHARE_INIT est une fonction fournie par Curl pour initialiser une poignée à une ressource partagée. Il est généralement utilisé pour partager des cookies, du DNS et d'autres informations entre plusieurs demandes de boucles. Cette fonction permet à plusieurs demandes de curl de partager le même cookie, ce qui est utile pour les scénarios où le même site doit être demandé plusieurs fois et rester connecté ou authentifié.
En partageant des cookies, nous pouvons éviter de reprendre les codes de vérification chaque fois que nous le demandons. Cela peut simuler plus efficacement le comportement du navigateur et éviter une vérification fréquente du code de vérification.
Voici un exemple simple qui montre comment utiliser la fonction curl_share_init pour cacher les cookies et les partager sur plusieurs demandes.
<?php
// Initialiser une poignée partagée
$ch_share = curl_share_init();
// Initialiser le premier cURL demander
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://m66.net/login"); // Remplacer par l'URL que vous devez visiter
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIEJAR, "cookies.txt"); // garder Cookie Aller au fichier
curl_setopt($ch1, CURLOPT_SHARE, $ch_share); // commun Cookie
$response1 = curl_exec($ch1);
// Soumettre le code de vérification des entrées analogiques
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://m66.net/submit_form"); // Remplacer par l'URL où le formulaire doit être soumis
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_POSTFIELDS, [
'username' => 'testuser',
'password' => 'testpassword',
'captcha' => 'captcha_code' // En supposant que le code de vérification a été entré
]);
curl_setopt($ch2, CURLOPT_SHARE, $ch_share); // commun Cookie
$response2 = curl_exec($ch2);
// fermeture cURL demander
curl_close($ch1);
curl_close($ch2);
// fermeturecommun句柄
curl_share_close($ch_share);
// 输出demander结果
echo "Response from first request: " . $response1;
echo "Response from second request: " . $response2;
?>
Initialisez une poignée partagée : utilisez CURL_SHARE_INIT pour initialiser une poignée partagée $ ch_share , qui sera utilisée pour partager des cookies, DNS et d'autres paramètres entre plusieurs demandes de curl.
Première demande : Dans la première demande Curl, nous utilisons Curl_setopt pour définir l'URL, le contenu de retour et les paramètres cookiejar , indiquant que les cookies sont enregistrés dans le fichier cookies.txt . Cette demande demandera localement la page du code de vérification, simulant le premier processus d'accès.
Deuxième demande : Dans la deuxième demande, nous soumettons un formulaire avec le nom d'utilisateur, le mot de passe et le code de vérification. En définissant le paramètre curlopt_share sur la poignée partagée $ ch_share , cela permet à la deuxième demande de réutiliser les cookies dans la première demande, évitant ainsi la vérification du code de vérification en double.
Fermer la ressource : une fois la demande terminée, nous utilisons Curl_close pour fermer chaque session CURL et nous utilisons enfin Curl_share_Close pour fermer la poignée partagée.
Évitez la vérification du code de vérification en double : En partageant des cookies, nous pouvons réutiliser le même état de connexion et les informations d'authentification dans plusieurs demandes, en évitant de rentrer le code de vérification à chaque fois que nous demandons.
Améliorer l'efficacité : si chaque demande doit réacquérir le code de vérification, il affectera non seulement l'expérience utilisateur, mais augmentera également le temps pour les demandes de réseau. L'utilisation de cookies partagés peut considérablement améliorer l'efficacité des demandes.
Limites des ressources partagées : Bien que Curl_Share_Init puisse nous aider à partager des ressources dans plusieurs demandes, assurez-vous de ne pas utiliser les mêmes poignées partagées dans trop de demandes simultanées, car cela peut conduire à la concurrence et aux exceptions des ressources.
L'utilisation de curl_share_init pour partager les cookies demandés Curl est un moyen efficace de résoudre les problèmes de vérification du code de vérification. Lorsque plusieurs demandes sont requises, en mettant en cache et en partageant des cookies, l'entrée du code de vérification en double peut être évitée et l'efficacité opérationnelle peut être améliorée. Qu'il s'agisse de vérification de connexion ou de soumettre des formulaires, le mécanisme de partage des boucles peut nous aider à mieux simuler le comportement du navigateur et réduire les interférences causées par le code de vérification.