หลักการต่อต้านการรวบรวมนั้นง่ายมาก ขั้นแรก ให้ใส่คำสั่งแบบไดนามิกเพื่อเพิ่ม IP ของผู้เข้าชมลงในตารางในฐานข้อมูล จากนั้น เพิ่ม JS ที่ด้านล่างของหน้า IP ไปยังตารางอื่นในฐานข้อมูล
เมื่อวานฉันเห็นซอฟต์แวร์ต่อต้านการรวบรวมข้อมูลบนอินเทอร์เน็ต ซึ่งบอกว่าคอลเลกชันเข้าถึงได้เฉพาะหน้าเว็บปัจจุบันเท่านั้น และไม่สามารถเข้าถึงรูปภาพ JS ฯลฯ ของหน้าเว็บได้ วันนี้จู่ๆ ก็เกิดขึ้นกับฉันว่า IP ของผู้เยี่ยมชม ควรบันทึกผ่านโปรแกรมไดนามิกและการเข้าถึง JS จากนั้นจึงจะสามารถตัดสิน IP ได้ ในระหว่างกระบวนการรวบรวม จะพบเฉพาะ IP ที่บันทึกโดยโปรแกรมไดนามิก และจะไม่มีการบันทึก IP JS จึงป้องกันการรวบรวมโปรแกรมหน้าเว็บ
หลักการต่อต้านการรวบรวมนั้นง่ายมาก ขั้นแรก ให้ใส่คำสั่งแบบไดนามิกเพื่อเพิ่ม IP ของผู้เข้าชมลงในตารางในฐานข้อมูล จากนั้น เพิ่ม JS ที่ด้านล่างของหน้า 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=ผู้ให้บริการ=Microsoft.Jet.OLEDB.4.0;แหล่งข้อมูล= & Server.MapPath(Data.mdb)
Conn.Open ConnStr
Ip=Request.ServerVariables(REMOTE_ADDR)
Sqlstr=เลือก * จาก [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 ()
สิ้นสุดถ้า
Rs.Close
ถ้าผู้ใช้ใหม่ = 0 แล้ว
Sqlstr=Select * From [Ip2] โดยที่ Ip2_Address='&Ip&' สั่งซื้อโดย Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
ถ้า Rs.Eof แล้ว
Rs.Close
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
copy code เป็นดังนี้:
<%
Dim Conn,Rs,Sqlstr,Ip
Set Conn = Server CreateObject(Adodb.Connection)
ตั้งค่า 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=เลือก * จาก [Ip2]
Rs.Open Sqlstr,Conn,1,3
Application.Lock()
Rs.AddNew()
Rs (Ip2_Address)=Ip
Rs.Update()
Application.UnLock()
Rs.ปิด
%>
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=ไซต์อยู่ระหว่างการบำรุงรักษา!
ออกจากฟังก์ชัน
สิ้นสุดหาก
เกิดข้อผิดพลาด ดำเนินการต่อ ถัดไป
Dim Http
Set Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
If Http.Readystate<>4 ให้
ตั้งค่า Http=Nothing
GetHttpPage=B site อยู่ระหว่างการบำรุงรักษา!
ออกจากฟังก์ชัน
สิ้นสุดถ้า
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
ตั้งค่า Http=Nothing
If Err.number<>0 แล้ว
Err.Clear
GetHttpPage=Cไซต์อยู่ระหว่างการบำรุงรักษา!
ออกจากฟังก์ชัน
End If
End Function
'==============================
'ชื่อฟังก์ชัน: BytesToBstr
'ฟังก์ชัน: แปลงฟังก์ชันการเข้ารหัส
' พารามิเตอร์ : String Body, การเข้ารหัส 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 = ไม่มี
ฟังก์ชันสิ้นสุด
%>
บทความนี้สร้างขึ้นโดย Fang Ka Online กรุณาระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ ความคล้ายคลึงกันใด ๆ ล้วนเป็นเรื่องบังเอิญ!