El principio de anti-colección es muy simple: primero, coloque una declaración dinámica para agregar la IP del visitante a una tabla en la base de datos y luego agregue un JS en la parte inferior de la página. El JS accede directamente a la página dinámica y agrega la del visitante. IP a otra tabla en la base de datos. Una tabla y un interior.
Ayer vi un software anti-colección en Internet que decía que la colección solo accede a la página web actual y no a las imágenes, JS, etc. de la página web. Hoy de repente se me ocurrió la IP del visitante. debe registrarse a través de programas dinámicos y acceso a JS, y luego se puede juzgar que no se accederá a JS durante el proceso de recopilación. Durante la recopilación, solo se encontrarán las IP registradas por los programas dinámicos y no habrá IP registradas por. JS, impidiendo así la recopilación de programas de páginas web.
El principio de anti-colección es muy simple: primero, coloque una declaración dinámica para agregar la IP del visitante a una tabla en la base de datos y luego agregue un JS en la parte inferior de la página. El JS accede directamente a la página dinámica y agrega la del visitante. IP a otra tabla en la base de datos. Una tabla y un interior. Al acceder nuevamente, lea los datos de IP de las dos tablas y luego determine la diferencia horaria. Si solo se encuentra en la primera tabla pero no en la segunda tabla, o la diferencia horaria excede los 10 segundos, se considera recopilada. .
ventaja
1. Implementación simple, siempre que sea un lenguaje dinámico, se puede implementar fácilmente sin la necesidad de programas del lado del servidor.
2. Tiene una alta letalidad y puede bloquear casi todos los procesos de recolección.
defecto
1. La primera desventaja es su alta letalidad. Si necesita usarlo en la práctica, debe considerar algunas circunstancias especiales para evitar matar accidentalmente al rastreador de búsqueda.
2. Solo aplicable a páginas web dinámicas, no se pueden utilizar páginas estáticas.
El proceso es un poco complicado, pero el principio en sí no es muy complicado. El ejemplo del programa se adjunta a continuación, y aquellos que conocen ASP deberían poder entenderlo rápidamente.
Ejemplo de programa (ASP+ACCESS) (descarga del programa de prueba):
1. Crea una base de datos
Tabla 1: Ip1, campos Ip1_Adderss (texto), Ip1_Time (fecha/hora, predeterminado=Ahora())
Tabla 2: Ip2, campos Ip2_Adderss (texto), Ip2_Time (fecha/hora, predeterminado=Ahora())
2.Index.asp (solo código dinámico, consulte el programa de prueba para ver todos los códigos)
Copie el código de la siguiente manera:<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Dim Conn,Rs,Sqlstr,Ip,IpTime,IpTime2,NewUser
NewUser=0
Set Conn = Server.CreateObject(Adodb.Connection)
Set Rs= Servidor .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=Seleccionar * Desde [Ip1] Donde Ip1_Address='&Ip&' Ordenar por Ip1_Id Desc
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Entonces
NewUser=1
Application.Lock()
Rs.AddNew()
Rs(Ip1_Address)=Ip
Rs.Update()
Application.UnLock()
De lo contrario
IpTime=Rs(Ip1_Time)
Application.Lock()
Rs.AddNew()
Rs(Ip1_Address)=Ip
Rs.Update()
Application.UnLock()
Finalizar si
Rs.Close
Si NewUser=0 Entonces
Sqlstr=Seleccionar * Desde [Ip2] Donde Ip2_Address='&Ip&' Ordenar por Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
Si Rs.Eof Entonces
Rs.Cerrar
Response.Write (¡No recopilar!)
Response.End()
De lo contrario
IpTime2=Rs(Ip2_Time)
Si DateDiff(s,IpTime2,IpTime)>10 Entonces
Rs.Close
Response.Write (¡No recopilar!)
Response.End()
End If
End If
Rs.Close
End If
%>
El código de copia3.Js.asp
es el siguiente:
<%
Dim Conn,Rs,Sqlstr,Ip
Set Conn = Servidor CreateObject(Adodb.Connection)
Establecer Rs=Server.Createobject(Adodb.RecordSet)
ConnStr=Provider=Microsoft.Jet.OLEDB.4.0;Fuente de datos=. & Server.MapPath(Data.mdb)
Conn.Open ConnStr
Ip=Request.ServerVariables(REMOTE_ADDR)
Sqlstr=Seleccionar * Desde [Ip2]
Rs.Open Sqlstr,Conn,1,3
Application.Lock()
Rs.AddNew()
Rs (Ip2_Address)=Ip
Rs.Update()
Aplicación.UnLock()
Rs.Close
%>
4.
El código de copia de Get.asp es el siguiente:
<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Response.Write(Server.HTMLEncode(GetHttpPage(http://localhost/Index.asp,GB2312)))
'= = =============================
'Nombre de la función: GetHttpPage
'Función: Obtener función de código fuente de página
' Parámetros: URL HttpUrl
'===============================
Función GetHttpPage(HttpUrl,Code )
Si IsNull(HttpUrl)=True O HttpUrl= Entonces
GetHttpPage=¡Un sitio está en mantenimiento!
Salir de la función
Finalizar si
hay error Reanudar Siguiente
Dim Http
Establecer Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
Si Http.Readystate<>4 entonces
configurar Http=Nothing
GetHttpPage=B sitio ¡En mantenimiento!
Salir de la función
Finalizar si
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
Establecer Http=Nothing
Si Err.number<>0 entonces
Err.Clear
GetHttpPage=C¡El sitio está en mantenimiento!
Salir de la función
End If
End Function
'===============================
'Nombre de la función: BytesToBstr
'Función: Convertir
parámetros de la función de codificación' : Cuerpo de cadena, codificación Cset
'==============================
Función BytesToBstr(Body,Cset)
Dim Objstream
Set Objstream = Servidor .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 = nada
Función final
%>
Este artículo fue creado originalmente por Fang Ka Online, indique la fuente al reimprimir. ¡Cualquier similitud es pura coincidencia!