Das Prinzip der Anti-Sammlung ist sehr einfach: Geben Sie zunächst eine dynamische Anweisung ein, um die IP des Besuchers zu einer Tabelle in der Datenbank hinzuzufügen. Fügen Sie dann einen JS am Ende der Seite hinzu und fügen Sie ihn hinzu IP zu einer anderen Tabelle in der Datenbank.
Gestern habe ich im Internet eine Anti-Collection-Software gesehen, die besagte, dass die Collection nur auf die aktuelle Webseite zugreift und nicht auf die Bilder, JS usw. der Webseite. Heute fiel mir plötzlich auf, dass die IP des Besuchers Es sollte über dynamische Programme und JS-Zugriff aufgezeichnet werden, und dann kann während des Erfassungsprozesses nicht auf die IP zugegriffen werden. Während der Erfassung werden nur die von dynamischen Programmen aufgezeichneten IPs gefunden JS und verhindert so die Sammlung von Webseitenprogrammen.
Das Prinzip der Anti-Sammlung ist sehr einfach: Geben Sie zunächst eine dynamische Anweisung ein, um die IP des Besuchers zu einer Tabelle in der Datenbank hinzuzufügen. Fügen Sie dann einen JS am Ende der Seite hinzu und fügen Sie ihn hinzu IP zu einer anderen Tabelle in der Datenbank. Lesen Sie beim erneuten Zugriff die IP-Daten aus den beiden Tabellen und ermitteln Sie dann den Zeitunterschied. Wenn dieser nur in der ersten Tabelle, aber nicht in der zweiten Tabelle gefunden wird, oder der Zeitunterschied mehr als 10 Sekunden beträgt, gelten sie als erfasst .
Vorteil
1. Einfache Bereitstellung: Solange es sich um eine dynamische Sprache handelt, kann sie problemlos implementiert werden, ohne dass serverseitige Programme erforderlich sind.
2. Es hat eine hohe Letalität und kann fast alle Sammelprozesse blockieren.
Mangel
1. Der erste Nachteil ist die hohe Tödlichkeit. Wenn Sie es in der Praxis verwenden müssen, müssen Sie einige besondere Umstände berücksichtigen, um zu vermeiden, dass der Suchcrawler versehentlich getötet wird.
2. Gilt nur für dynamische Webseiten, statische Seiten können nicht verwendet werden.
Der Prozess ist etwas chaotisch, aber das Prinzip selbst ist nicht sehr kompliziert. Das Programmbeispiel ist unten beigefügt, und diejenigen, die ASP kennen, sollten es schnell verstehen können.
Programmbeispiel (ASP+ACCESS) (Testprogramm-Download):
1. Erstellen Sie eine Datenbank
Tabelle 1: Ip1, Felder Ip1_Adderss (Text), Ip1_Time (Datum/Uhrzeit, Standard=Now())
Tabelle 2: Ip2, Felder Ip2_Adderss (Text), Ip2_Time (Datum/Uhrzeit, Standard=Now())
2.Index.asp (nur dynamischer Code, alle Codes finden Sie im Testprogramm)
Kopieren Sie den Code wie folgt:<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Dim Conn,Rs,Sqlstr,Ip,IpTime,IpTime2,NewUser
NewUser=0
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 [Ip1] Where Ip1_Address='&Ip&' Sortieren nach Ip1_Id Desc
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Then
NewUser=1
Application.Lock()
Rs.AddNew()
Rs(Ip1_Address)=Ip
Rs.Update()
Application.UnLock()
Else
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] Where Ip2_Address='&Ip&' Order By Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Then
Rs.Close
Response.Write (Nicht sammeln!)
Response.End()
Sonst
IpTime2=Rs(Ip2_Time)
Wenn DateDiff(s,IpTime2,IpTime)>10, dann
Rs.Close
Response.Write (Nicht sammeln!)
Response.End()
End If
End If
Rs.Close
End If
%>
3.Js.asp
-Kopiercode lautet wie folgt:
<%
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. Der Get.asp-
Kopiercode lautet wie folgt:
<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Response.Write(Server.HTMLEncode(GetHttpPage(http://localhost/Index.asp,GB2312)))
'= = ============================
'Funktionsname: GetHttpPage
'Funktion: Seitenquellcode-Funktion abrufen
' Parameter: URL HttpUrl
'=============================
Funktion GetHttpPage(HttpUrl,Code )
Wenn IsNull(HttpUrl)=True oder HttpUrl=, dann
GetHttpPage=Eine Website wird gewartet!
Exit Function
End If
On Error Resume Next
Dim Http
Set Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
If Http.Readystate<>4 then
Set Http=Nothing
GetHttpPage=B site In Wartung!
Funktion beenden. Beenden
, wenn
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
Http=Nothing setzen.
Wenn Err.number<>0, dann
Err.Clear
GetHttpPage=C. Die Site wird gewartet!
Exit-Funktion
End If
End Function
'=============================
' Funktionsname: BytesToBstr
'Funktion: Codierungsfunktion konvertieren
' Parameter : String Body, Kodierung Cset
'=============================
Function 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 = Nothing
End Function
%>
Dieser Artikel wurde ursprünglich von Fang erstellt Ka Online, Bitte geben Sie beim Nachdruck die Quelle an. Jegliche Ähnlichkeit ist reiner Zufall!