مبدأ مكافحة التجميع بسيط للغاية. أولاً، ضع بيانًا ديناميكيًا لإضافة عنوان IP الخاص بالزائر إلى جدول في قاعدة البيانات، ثم قم بإضافة JS إلى الصفحة الديناميكية مباشرةً وإضافة عنوان الزائر IP إلى جدول آخر في قاعدة البيانات جدول وداخل.
لقد رأيت بالأمس برنامجًا مضادًا للتجميع على الإنترنت، يقول إن المجموعة تصل فقط إلى صفحة الويب الحالية، ولا تصل إلى الصور وJS وما إلى ذلك لصفحة الويب. واليوم خطر لي فجأة أن عنوان IP الخاص بالزائر يجب تسجيله من خلال البرامج الديناميكية والوصول إلى JS، ومن ثم يمكن الحكم على IP JS أثناء عملية التجميع، وسيتم العثور على عناوين IP المسجلة بواسطة البرامج الديناميكية فقط، ولن يكون هناك عناوين IP مسجلة JS، وبالتالي منع جمع برامج صفحات الويب.
مبدأ مكافحة التجميع بسيط للغاية. أولاً، ضع بيانًا ديناميكيًا لإضافة عنوان IP الخاص بالزائر إلى جدول في قاعدة البيانات، ثم قم بإضافة JS إلى الصفحة الديناميكية مباشرةً وإضافة عنوان الزائر 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= الخادم. إنشاء كائن (Adodb.RecordSet)
ConnStr=Provider=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()
End إذا
Rs.Close
إذا NewUser=0 إذن
Sqlstr=Select * From [Ip2] Where Ip2_Address='&Ip&' ترتيب حسب Ip2_Id Desc
Rs.Open Sqlstr,Conn,1,3
إذا كان Rs.Eof ثم
Rs.Close
Response.اكتب (لا تجمع!)
Response.End()
آخر
IpTime2=Rs(Ip2_Time)
إذا كان DateDiff(s,IpTime2,IpTime)>10 ثم
Rs.Close
Response.Write (لا تجمع!)
Response.End()
End If
End If End If
Rs.Close
End If
%>
3.Js.asp
رمز النسخ كما يلي:
<%
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.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=الموقع تحت الصيانة!
إنهاء الوظيفة
إذا
كان هناك خطأ، استئناف التالي
Dim Http
Set Http=server.createobject(MSX&ML2.XML&HTTP)
Http.open GET,HttpUrl,False
Http.Send()
إذا كان Http.Readystate<>4 ثم
قم بتعيين Http=Nothing
GetHttpPage=B site تحت الصيانة!
إنهاء الوظيفة
إذا كان
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
قم بتعيين Http=لا شيء
إذا كان 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 = لا شيء
وظيفة النهاية
%>
تم إنشاء هذه المقالة في الأصل بواسطة Fang كا أون لاين، يرجى الإشارة إلى المصدر عند إعادة الطباعة. وأي تشابه هو من قبيل الصدفة البحتة!