Принцип антисбора очень прост: сначала поместите динамический оператор для добавления IP-адреса посетителя в таблицу в базе данных, затем добавьте JS внизу страницы. JS напрямую обращается к динамической странице и добавляет IP-адрес посетителя. IP к другой таблице в базе данных. Таблица и внутренность.
Вчера я увидел в Интернете антиколлекционное программное обеспечение, которое говорило, что коллекция обращается только к текущей веб-странице и не имеет доступа к изображениям, JS и т. д. веб-страницы. Сегодня мне вдруг пришло в голову, что IP-адрес посетителя. должны быть записаны с помощью динамических программ и доступа к JS, и тогда IP-адрес не будет доступен в процессе сбора. Во время сбора будут найдены только IP-адреса, записанные динамическими программами, и IP-адреса, записанные пользователем, не будут. JS, тем самым предотвращая сбор программ веб-страниц.
Принцип антисбора очень прост: сначала поместите динамический оператор для добавления IP-адреса посетителя в таблицу в базе данных, затем добавьте JS внизу страницы. JS напрямую обращается к динамической странице и добавляет IP-адрес посетителя. IP к другой таблице в базе данных. Таблица и внутренность. При повторном доступе прочитайте данные IP из двух таблиц, а затем определите разницу во времени. Если она обнаружена только в первой таблице, но не во второй таблице, или разница во времени превышает 10 секунд, она считается собранной. .
преимущество
1. Простое развертывание, поскольку это динамический язык, его можно легко реализовать без необходимости использования серверных программ.
2. Обладает высокой летальностью и может блокировать практически все процессы сбора.
недостаток
1. Первым недостатком является высокая летальность. Если вам нужно использовать его на практике, вам нужно учитывать некоторые особые обстоятельства, чтобы избежать случайного убийства поискового сканера.
2. Применимо только к динамическим веб-страницам. Статические страницы использовать нельзя.
Процесс немного запутанный, но сам принцип не очень сложен. Пример программы прикреплен ниже, и те, кто знает ASP, смогут быстро его понять.
Пример программы (ASP+ACCESS) (загрузка тестовой программы):
1. Создайте базу данных
Таблица 1: Ip1, поля Ip1_Adderss (текст), Ip1_Time (дата/время, по умолчанию = Сейчас())
Таблица 2: Ip2, поля Ip2_Adderss (текст), Ip2_Time (дата/время, по умолчанию = Сейчас())
2.Index.asp (только динамический код, все коды см. в тестовой программе)
Скопируйте код следующим образом:<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Dim Conn,Rs,Sqlstr,Ip,IpTime,IpTime2,NewUser
NewUser=0
Set Conn = Server.CreateObject(Adodb.Connection)
Set Rs= Сервер .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] Где Ip1_Address='&Ip&' Порядок по Ip1_Id Desc
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Тогда
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
Если NewUser=0 Тогда
Sqlstr=Select * From [Ip2] Где Ip2_Address='&Ip&' Упорядочить по Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
Если Rs.Eof Тогда
Rs.Закрыть
Response.Write (Не собирать!)
Response.End()
Иначе
IpTime2=Rs(Ip2_Time)
Если DateDiff(s,IpTime2,IpTime)>10 Тогда
Rs.Close
Response.Write (Не собирать!)
Response.End()
End If
End If
Rs.Close
End If
%>
3.Js.asp.
Код копирования следующий:
<%
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. Код копирования Get.asp
выглядит следующим образом:
<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%
Response.Write(Server.HTMLEncode(GetHttpPage(http://localhost/Index.asp,GB2312)))
'= = ===========================
'Имя функции: GetHttpPage
'Функция: функция получения исходного кода страницы
' Параметры: URL HttpUrl
'============================
Функция GetHttpPage(HttpUrl,Code )
Если IsNull(HttpUrl)=True или HttpUrl=, то
GetHttpPage=Сайт находится на обслуживании!
Выход из функции
End Если
при ошибке Возобновить следующий
Dim Http
Set Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
Если Http.Readystate<>4, то
Set Http=Nothing
GetHttpPage=B site На обслуживании!
Выход из функции
Конец, если
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
Установить Http=Nothing
Если Err.number<>0, то
Err.Clear
GetHttpPage=CСайт находится на обслуживании!
Выход из функции
End If
End Function
'==============================
'Имя функции: BytesToBstr
'Функция: Преобразование функции кодирования
' параметры : Тело строки, кодировка Cset
'=============================
Функция 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
Конечная функция
%>
Эта статья изначально была создана Fang Ka Online, При перепечатке указывайте, пожалуйста, источник. Любое сходство чисто случайно!