수집 방지의 원리는 매우 간단합니다. 먼저 방문자의 IP를 데이터베이스의 테이블에 추가한 다음 JS가 동적 페이지에 직접 액세스하여 방문자의 IP를 추가합니다. 데이터베이스의 다른 테이블과 내부에 대한 IP입니다.
어제 인터넷에서 컬렉션이 현재 웹페이지에만 액세스하고 웹페이지의 사진, JS 등에 액세스하지 않는다는 수집 방지 소프트웨어를 봤습니다. 오늘 갑자기 방문자의 IP가 생각났습니다. 수집 과정에서는 JS에 접속하지 않으며, 동적 프로그램에 의해 기록된 IP만 검색되며, JS에 의해 기록된 IP는 없습니다. JS를 사용하여 웹페이지 프로그램의 수집을 방지합니다.
수집 방지의 원리는 매우 간단합니다. 먼저 방문자의 IP를 데이터베이스의 테이블에 추가한 다음 JS가 동적 페이지에 직접 액세스하여 방문자의 IP를 추가합니다. 데이터베이스의 다른 테이블과 내부에 대한 IP입니다. 다시 접속할 때 두 테이블의 IP 데이터를 읽어서 시간차를 판단하면 첫 번째 테이블에만 있고 두 번째 테이블에는 나오지 않거나, 시간차가 10초를 초과하면 수집된 것으로 간주한다. .
이점
1. 간단한 배포, 동적 언어라면 서버측 프로그램 없이도 쉽게 구현할 수 있습니다.
2. 치사율이 높아 거의 모든 수집 과정을 차단할 수 있습니다.
결점
1. 첫 번째 단점은 치사율이 높다는 점입니다. 실제로 사용해야 하는 경우 검색 크롤러를 실수로 죽이지 않도록 몇 가지 특별한 상황을 고려해야 합니다.
2. 동적 웹페이지에만 적용되며, 정적 페이지는 사용할 수 없습니다.
과정은 다소 복잡하지만 원리 자체는 그다지 복잡하지 않습니다. 아래에 프로그램 예제를 첨부해 두니 ASP를 아시는 분들이라면 금방 이해하실 수 있을 것입니다.
프로그램 예(ASP+ACCESS)(테스트 프로그램 다운로드):
1. 데이터베이스 생성
표 1: Ip1, 필드 Ip1_Adderss(텍스트), Ip1_Time(날짜/시간, 기본값=Now())
표 2: Ip2, 필드 Ip2_Adderss(텍스트), Ip2_Time(날짜/시간, 기본값=Now())
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;데이터 원본= & Server.MapPath(Data.mdb)
Conn.Open ConnStr
Ip=Request.ServerVariables(REMOTE_ADDR)
Sqlstr=Select * From [Ip1] Where Ip1_Address='&Ip&' 주문 기준 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(수집하지 않음!)
Response.End()
Else
IpTime2=Rs(Ip2_Time)
If DateDiff(s,IpTime2,IpTime)>10 Then
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;데이터 소스= & 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 Or HttpUrl=이면
GetHttpPage=사이트가 유지 관리 중입니다!
함수 종료
오류 발생시
재개 다음
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 사이트 점검중!
기능 종료
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 = 없음
End Function
%>
이 문서는 원래 Fang에 의해 작성되었습니다. 카온라인, 전재시 출처를 밝혀주세요. 유사점은 순전히 우연입니다!