Le principe de l'anti-collecte est très simple. Tout d'abord, mettez une instruction dynamique pour ajouter l'IP du visiteur dans une table de la base de données. Ajoutez ensuite un JS en bas de page. Le JS accède directement à la page dynamique et ajoute celle du visiteur. IP vers une autre table de la base de données. Une table et un intérieur.
Hier, j'ai vu un logiciel anti-collecte sur Internet, qui disait que la collection accède uniquement à la page Web actuelle et n'accède pas aux images, JS, etc. de la page Web. Aujourd'hui, il m'est soudain venu à l'esprit que l'adresse IP du visiteur. doit être enregistré via des programmes dynamiques et un accès JS, puis l'adresse IP ne sera pas accessible pendant le processus de collecte. Pendant la collecte, seules les adresses IP enregistrées par les programmes dynamiques seront trouvées, et aucune adresse IP ne sera enregistrée par. JS, empêchant ainsi la collecte de programmes de pages Web.
Le principe de l'anti-collecte est très simple. Tout d'abord, mettez une instruction dynamique pour ajouter l'IP du visiteur dans une table de la base de données. Ajoutez ensuite un JS en bas de page. Le JS accède directement à la page dynamique et ajoute celle du visiteur. IP vers une autre table de la base de données. Une table et un intérieur. Lors d'un nouvel accès, lisez les données IP des deux tables, puis déterminez la différence de temps. Si elles ne se trouvent que dans la première table mais pas dans la deuxième table, ou si la différence de temps dépasse 10 secondes, elles sont considérées comme collectées. .
avantage
1. Déploiement simple, tant qu'il s'agit d'un langage dynamique, il peut être facilement implémenté sans avoir besoin de programmes côté serveur.
2. Il a une létalité élevée et peut bloquer presque tous les processus de collecte.
défaut
1. Le premier inconvénient est sa grande létalité. Si vous devez l'utiliser dans la pratique, vous devez prendre en compte certaines circonstances particulières pour éviter de tuer accidentellement le robot de recherche.
2. Applicable uniquement aux pages Web dynamiques, les pages statiques ne peuvent pas être utilisées.
Le processus est un peu compliqué, mais le principe lui-même n'est pas très compliqué. L'exemple de programme est joint ci-dessous, et ceux qui connaissent ASP devraient pouvoir le comprendre rapidement.
Exemple de programme (ASP+ACCESS) (téléchargement du programme de test) :
1. Créez une base de données
Tableau 1 : Ip1, champs Ip1_Adderss (texte), Ip1_Time (date/heure, par défaut=Now())
Tableau 2 : Ip2, champs Ip2_Adderss (texte), Ip2_Time (date/heure, par défaut=Now())
2.Index.asp (uniquement le code dynamique, veuillez consulter le programme de test pour tous les codes)
Copiez le code comme suit :<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Dim Conn,Rs,Sqlstr,Ip,IpTime,IpTime2,NewUser
NewUser=0
Set Conn = Server.CreateObject(Adodb.Connection)
Set Rs= Serveur .Createobject (Adodb.RecordSet)
ConnStr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(Data.mdb)
Conn.Open ConnStr
Ip=Request.ServerVariables(REMOTE_ADDR)
Sqlstr=Sélectionner * De [Ip1] Où Ip1_Address='&Ip&' Trier par Ip1_Id Desc
Rs.Open Sqlstr,Conn,1,3
Si Rs.Eof Puis
NewUser=1
Application.Lock()
Rs.AddNew()
Rs(Ip1_Address)=Ip
Rs.Update()
Application.UnLock()
Sinon
IpTime=Rs(Ip1_Time)
Application.Lock()
Rs.AddNew()
Rs(Ip1_Address)=Ip
Rs.Update()
Application.UnLock()
End If
Rs.Close
If NewUser=0 Then
Sqlstr=Select * From [Ip2] Où Ip2_Address='&Ip&' Trier par Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Then
Rs.Close
Response.Write (Ne pas collecter !)
Response.End()
Sinon
IpTime2=Rs(Ip2_Time)
Si DateDiff(s,IpTime2,IpTime)>10 Alors
Rs.Close
Response.Write (Ne pas collecter !)
Response.End()
End If
End If
Rs.Close
End If
%>
3.Js.asp
le code de copie est le suivant :
<%
Dim Conn,Rs,Sqlstr,Ip
Set Conn = Server . CreateObject(Adodb.Connection)
Set Rs=Server.Createobject(Adodb.RecordSet)
ConnStr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=. & Server.MapPath(Data.mdb)
Conn.Open ConnStr
Ip=Request.ServerVariables(REMOTE_ADDR)
Sqlstr=Select * From [Ip2]
Rs.Open Sqlstr,Conn,1,3
Application.Lock()
Rs.AddNew()
Rs (Ip2_Address)=Ip
Rs.Update()
Application.UnLock()
Rs.Close
%>
4. Le code de copie Get.asp
est le suivant :
<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Response.Write(Server.HTMLEncode(GetHttpPage(http://localhost/Index.asp,GB2312)))
'= = ============================
'Nom de la fonction : GetHttpPage
'Fonction : fonction d'obtention du code source de la page
' Paramètres : URL HttpUrl
'==============================
Fonction GetHttpPage(HttpUrl,Code )
Si IsNull(HttpUrl)=True Ou HttpUrl= Alors
GetHttpPage=Un site est en maintenance !
Quitter la fonction
Fin en cas
d'erreur Reprendre suivant
Dim Http
Set Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
Si Http.Readystate<>4 alors
Set Http=Nothing
GetHttpPage=B site En maintenance !
Quitter la fonction
Fin si
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
Définir Http=Nothing
Si Err.number<>0 alors
Err.Clear
GetHttpPage=CLe site est en maintenance !
Quitter la fonction
End If
End Function
'==============================
'Nom de la fonction : BytesToBstr
'Fonction : Convertir
les paramètres de la fonction d'encodage' : Corps de chaîne, encodage Cset
'==============================
Fonction BytesToBstr(Body,Cset)
Dim Objstream
Set Objstream = Server .CreateObject(ado&d&b.st&re&am)
Objstream.Type = 1
Objstream.Mode = 3
Objstream.Open
Objstream.Write body
Objstream.Position = 0
Objstream.Type = 2
Objstream.Charset = Cset
BytesToBstr = Objstream.ReadText
Objstream.Close
set Objstream = rien
End Function
%>
Cet article a été créé à l'origine par Fang Ka Online, veuillez indiquer la source lors de la réimpression. Toute similitude est purement fortuite !