Le voleur mentionné ici fait référence à l'utilisation des puissantes fonctions fournies par le composant XMLHTTP en XML dans ASP pour capturer les données (images, pages Web et autres fichiers) du site Web distant vers le site local et les afficher sur la page après divers traitements. Ou un type de programme stocké dans une base de données. Vous pouvez utiliser ce type de programme voleur pour accomplir certaines tâches qui semblaient complètement impossibles dans le passé, comme modifier les pages d'un certain site Web et les transformer en vos propres pages, ou sauvegarder certaines données (articles, images) d'un certain site Web. à utiliser dans la base de données locale. Les avantages de Thief sont les suivants : il n'est pas nécessaire de maintenir le site Web, car les données du programme Thief proviennent d'autres sites Web, et elles seront mises à jour au fur et à mesure de la mise à jour du site Web, ce qui permet d'économiser beaucoup de ressources du serveur. Le programme Thief ne contient que quelques fichiers et tout le contenu Web provient d’autres sites Web. Les inconvénients sont : l'instabilité, si le site Web cible tombe en panne, le programme fonctionnera également en panne, et si le site Web cible est mis à niveau et maintenu, la vitesse du programme voleur devra également être modifiée en conséquence, car il s'agit d'un appel à distance ; la vitesse est aussi rapide que la lecture des données sur le serveur local. C'est nettement plus lent que cela. Et si, ça a l’air incroyable, n’est-ce pas ? Commençons dès maintenant à apprendre quelques connaissances d’introduction au programme voleur !
Etudions quelque chose de plus simple, le programme de prévisions météo sur le site QQ
Le code est le suivant :
<%
En cas d'erreur, reprendre ensuite
Serveur.ScriptTimeOut=9999999
Fonction getHTTPage(Chemin)
t = ObtenirCorps(Chemin)
getHTTPPage=BytesToBstr(t,GB2312)
Fin de fonction
' Tout d'abord, effectuez quelques paramètres d'initialisation pour le programme voleur. Les fonctions des codes ci-dessus sont d'ignorer toutes les erreurs non fatales, de définir le délai d'attente d'exécution du programme voleur sur une durée très longue (afin qu'aucune erreur de délai d'exécution ne se produise). , et convertissez la valeur par défaut d'origine. L'encodage UTF-8 doit être converti en encodage GB2312, sinon l'utilisation directe du composant XMLHTTP pour appeler une page Web avec des caractères chinois entraînera un code tronqué.
Fonction GetBody(url)
en cas d'erreur, reprendre ensuite
Définir la récupération = CreateObject (Microsoft.XMLHTTP)
Avec récupération
.Ouvrez Obtenir, URL, Faux, ,
.Envoyer
GetBody = .ResponseBody
Terminer par
Définir la récupération = Rien
Fonction de fin
'Appelez ensuite le composant XMLHTTP pour créer un objet et effectuer les réglages initiaux.
Fonction BytesToBstr(corps,Cset)
objstream obscur
définir objstream = Server.CreateObject (adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Ouvrir
objstream.Écrire le corps
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Fermer
définir objstream = rien
Fonction de fin
Fonction Nouvellechaîne(wstr,strng)
Nouvellechaîne=Instr(lcase(wstr),lcase(strng))
si Nouvellechaîne<=0 alors Nouvellechaîne=Len(wstr)
Fonction de fin
« Pour traiter les données capturées, vous devez appeler le composant adodb.stream et effectuer les paramètres d'initialisation. %>
'Ce qui suit est la partie d'affichage de la page
<%
Dim wstr, str, url, début, fin, ville
'Définir certaines variables qui doivent être utilisées
ville = Request.QueryString(id)
'La variable ID renvoyée par le programme (c'est-à-dire la ville sélectionnée par l'utilisateur) est affectée à id
url=http://appnews.qq.com/cgi-bin/news_qq_search?city=&city&
« Définissez ici l'adresse de la page qui doit être explorée. Bien sûr, vous pouvez également spécifier une adresse directement sans utiliser de variables.
wstr=getHTTPage(url)
'Obtenir toutes les données de la page spécifiée
start=Nouvellechaîne(wstr, <html>)
"Définit ici l'en-tête des données qui doivent être traitées. Cette variable doit être définie en fonction de différentes situations. Le contenu spécifique peut être déterminé en affichant le code source de la page qui doit être explorée. Parce que nous devons explorer la page entière dans ce programme, nous l'avons configuré pour explorer toutes les pages. Notez que le contenu défini doit être unique au contenu de la page et ne peut pas être répété.
over=Nouvellechaîne(wstr, </HTML>)
« Au début correspond la fin des données qui doivent être traitées. De même, le contenu défini doit être unique dans la page.
corps=mid(wstr,start,over-start)
'Définir la plage de pages affichées
'Il est maintenant temps d'utiliser Qiankun Shift +++ Grâce au remplacement, vous pouvez remplacer les caractères spécifiés dans les données par certains caractères.
body = remplacer (corps, skin1, prévisions météo-Skin Network)
corps = remplacer (corps, http://appnews.qq.com/cgi-bin/news_qq_search?city,tianqi.asp?id)
« Les travaux de remplacement sont terminés dans ce programme. S'il existe d'autres besoins, vous pouvez continuer à effectuer des opérations de remplacement similaires.
corps de réponse.write
%>
Après avoir remplacé le contenu à modifier, le contenu modifié peut être affiché sur la page. C'est la fin du processus
Utilisation du programme et résultats : supprimez la partie description du code ci-dessus et enregistrez-la sous tianqi.asp, téléchargez-la dans un espace prenant en charge ASP et XML et exécutez-la dans le navigateur. Vous pouvez poursuivre l'embellissement de l'interface ou l'optimisation du programme sur la base de ce programme.
Ce qui précède ne représente que quelques applications de base du composant XMLHTTP. En fait, il peut également implémenter de nombreuses fonctions, telles que l'enregistrement d'images distantes sur le serveur local et l'utilisation du composant adodb.stream pour enregistrer les données acquises dans la base de données. Thief a un large éventail de fonctions et d’utilisations. Mais vous ne pouvez pas l’utiliser pour faire des choses illégales !
Peut-être que certaines personnes veulent encore se demander si ce type de programme voleur n'est qu'un brevet d'ASP ? Non, PHP peut obtenir le même effet grâce à la fonction fopen. En raison des diverses caractéristiques de PHP lui-même, le programme voleur écrit présente des avantages évidents en termes de taille et d'efficacité d'exécution par rapport à ASP. Cependant, en raison de limitations d'espace, je ne le ferai pas ici. expliquez-les un par un.