introduction
Avec le développement rapide d'Internet, la demande de mégadonnées augmente. En tant qu'outil important pour ramper automatiquement les informations sur la page Web, les robots Web sont largement utilisés dans la collecte de données. Cependant, face à la pression du trafic et aux risques de sécurité des données apportés par des robots, de nombreux sites Web ont déployé une variété de mécanismes anti-frawler, tels que les codes de vérification, les restrictions IP et la vérification de la connexion des comptes, ce qui augmente considérablement la difficulté du développement du robot. Cet article combinera le langage PHP et le Framework open source PHPSPider pour introduire des méthodes efficaces pour traiter ces blocages anti-frawler.
1. Analyse des mécanismes anti-frawler communs
1. Code de vérification
Le code de vérification nécessite que l'utilisateur saisisse le contenu correct pour vérifier l'identité en affichant des caractères ou des images déformés. Il présente un grand défi à l'identification automatique des robots. Les codes de vérification de fissuration peuvent être obtenus en utilisant la technologie OCR, tels que l'OCR Tesseract Open Source, pour convertir des images en texte, et identifier automatiquement et remplir.
2. Restrictions IP
Pour empêcher l'accès fréquent d'une seule IP d'être identifié comme un robot, le site Web limitera la fréquence des demandes IP. En tournant des adresses IP à l'aide d'un serveur proxy, les sources d'accès multiples peuvent être simulées et le blocage IP peut être contourné efficacement.
3. Connexion du compte
Certains sites Web restreignent les utilisateurs connectés pour accéder aux données spécifiques. Le Crawler simule le processus de connexion et remplit automatiquement le nom d'utilisateur et le mot de passe pour réaliser que les données rampaient après la connexion, en évitant les restrictions d'accès.
2. Utilisez PHPSPIDER pour casser le mécanisme de blocage
PHPSPIDER est un framework de robot d'ouverture open source basé sur PHP. Il a des fonctions riches et prend en charge la reconnaissance du code de vérification, la connexion simulée et la commutation proxy, ce qui améliore considérablement l'efficacité et le taux de réussite de la rampe.
1. Exemple de traitement du code de vérification
En intégrant PhantoMJS et PHPSPider, vous pouvez prendre des captures d'écran des pages Web et enregistrer des images de code de vérification, puis utiliser des outils OCR pour identifier le texte du code de vérification dans l'image et terminer le remplissage automatique. L'exemple de code est le suivant:
require 'vendor/autoload.php';
<p>use JonnyWPhantomJs\Client;</p>
<p>$client = Client::getInstance();<br>
$client->getEngine()->setPath('/usr/local/bin/phantomjs');</p>
<p>$request = $client->getMessageFactory()->createCaptureRequest('<a rel="noopener" target="_new" class="" href="http://www.example.com">http://www.example.com</a>');<br>
$request->setViewportSize(1024, 768)->setCaptureFormat('png');</p>
<p>$response = $client->getMessageFactory()->createResponse();<br>
$client->send($request, $response);</p>
<p>if ($response->getStatus() === 200) {<br>
$response->save('example.png');<br>
}
Le code ci-dessus enregistre la capture d'écran de la page Web, puis utilise OCR pour analyser l'image pour réaliser l'identification automatique du code de vérification.
2. Simuler la mise en œuvre de la connexion
Utilisez la bibliothèque Guzzlehttp pour envoyer des demandes de poste, simuler la soumission du formulaire de connexion, réaliser la connexion automatique et accéder aux données restreintes après une connexion réussie. L'exemple de code est le suivant:
require 'vendor/autoload.php';
<p>use GuzzleHttp\Client;</p>
<p>$username = 'your_username';<br>
$password = 'your_password';</p>
<p>$client = new Client();</p>
<p>$response = $client->post('<a rel="noopener" target="_new" class="" href="http://www.example.com/login">http://www.example.com/login</a>', [<br>
'form_params' => [<br>
'username' => $username,<br>
'password' => $password,<br>
]<br>
]);</p>
<p>if ($response->getStatusCode() === 200) {<br>
$response = $client->get('<a rel="noopener" target="_new" class="" href="http://www.example.com/data">http://www.example.com/data</a>');<br>
$data = $response->getBody();<br>
echo $data;<br>
}
Après s'être connecté, le robot peut accéder au contenu limité de connexion comme les utilisateurs ordinaires pour obtenir des données rampantes.
Résumer
Une compréhension approfondie du mécanisme anti-frawler et de la combinaison des fonctions de PHPSPider peuvent éviter efficacement les codes de vérification, les restrictions IP et l'authentification de la connexion, et améliorer la stabilité et l'efficacité des robots de robots. Au cours du processus de développement, nous devons toujours respecter les spécifications d'utilisation du site Web cible, collecter des données raisonnablement et légalement et éviter de violer les droits et les intérêts des autres. L'utilisation correcte des outils de chenilles fournira un puissant coup de pouce à l'acquisition de données.