سؤال

سؤالي عن التحقق أكثر من أي شيء آخر. ما الذي يمكن استخدامه لتحديد ما هو فريد من نوعه في مستند HTML؟ (يمكن أن يكون للوثيقة درجة من كونها ديناميكية.)

ما هو قادر على استخدامه، أو تم إنشاؤه للتعرف على أن الصفحة هي الصفحة الصحيحة لدقة القول 99٪، مع الأخذ في الاعتبار، يمكنك تخزين "بصمات الأصابع" من أنواع الصفحة التي تتحقق منها؟


من أجل الوضوح، هذا إضافي إضافي للتشفير / https وما إلى ذلك. يمكن أن تتغير هذه الصفحة مع محتوى ديناميكي وفقا لمستخدمين محددين، ومع ذلك، يمكن أن يكون بإمكان بصمة واحدة، ولكن بصمة واحدة لا يمكن أن تتطابق 100٪ من المستخدمين بسبب الطبيعة من المحتوى الديناميكي. لذلك لا يمكن للتجزئة العمل هنا، على الأقل ليس في شكل مبسط.

هل كانت مفيدة؟

المحلول

من السهل حساب بصمة فريدة من صفحة HTML. بناء التجزئة مما يلي:

  • البروتوكول: HTTP أو HTTPS
  • عنوان URL: المجال + URI
  • Query_string.
  • محتويات الصفحة الدقيقة وصولا إلى بايت

اختياريا بعض الرؤوس:

  • Server
  • Content-Type هذا مهم
  • Content-encoding هذا ربما أيضا
  • المزيد من الأفكار؟ لا تتردد في تحريرها في.

هذا يفترض أنك لا تنشر أي بيانات إلى الصفحات.

نصائح أخرى

لا يمكن أن تكون متأكدا حتى 1٪ إذا كنت لن تحقق IP للمضيف. التالي هو التشفير. (بدون هذا، يمكنك أن تكون ضحية ل ARP Poisoing (فقط في شبكات LAN)).

يجب أن يكون المفتاح في HTTPs هو نفسه طوال الوقت.

إذا تغير الأمر، فهذا يعني أن شخصا بالغ يخون أو مفتاح التحديث (المفاتيح لها تاريخ انتهاء الصلاحية.)

بصمة الصفحة هي اسم المضيف والمنفذ والمسار. هذا هو الشيء الوحيد المضمون أن تكون فريدة من نوعها عبر الويب. أفترض أنه يمكنك أيضا تضمين رؤوس ذاكرة التخزين المؤقت (آخر تعديل) لمعرفة ما إذا كان قد تغير.

علاوة على ذلك، إذا قمت بتسجيل HTML، فيمكنك معرفة ما إذا كان قد تغير حتى لو تغير رأس المعدل الأخير.

على افتراض وجود دقيقة تريد تخزين "بصمات الأصابع" لصفحة HTML حتى تتمكن من التعرف عليها لاحقا إذا كان ذلك بالضبط المباريات، ما عليك سوى استخدام هما هاش بسيطة من صفحة HTML.

ما لم تقم بإلغاء تحديد السؤال أكثر، لا أستطيع أن أرى أي سبب لماذا يجب أن يهم ذلك هو HTML أو المتصفح الموجود فيه.

لن يخبرك هذا إذا كانت الصفحة في نفس الموقع. لأنك تحتاج إلى تخزين تفاصيل إضافية مثل المضيف / IP والمسار.

إذا كنت تستطيع الحصول على إصدارات النصية من الصفتين، فيمكنك فرقتها. يمكنك تحديد حد أقصى مدى مقبول للحصول على الاختلافات في الصفحة.

هناك Unix Util (يسمى DIFF). هناك نسخ Win32 من هذه الأداة تطفو حول الشبكة أيضا. ويكيبيديا لديها مقال عن فرق: http://en.wikipedia.org/wiki/diff..

يسرد مقالة Wiki أدوات مقارنة الملفات المجانية و "انظر أيضا" يحتوي على روابط إلى مقالات أخرى تناقش أدوات مقارنة الملفات وترميز DELTA.

قد تكون "Levenshtey Virdy Vely Dety" أيضا نهجا مثيرا للاهتمام.

يوجد محرك فارق C # لائق على CodeProject. لا يمكنني نشر رابط آخر بسبب نقاطي المنخفضة ولكن عنوان المقالة هو: "خوارزمية فرق عامية قابلة لإعادة الاستخدام في C #".

حتى إذا كان لديك اسم المضيف بالضبط، والمنفذ، والمسار لا يزال المحتوى مختلفا إذا كان هناك خادم تطبيق يخدم صفحات الويب أو إذا كان خادم الويب يقوم بإدراج محتوى الإعلان.

إذا استطعت تحديد أجزاء HTML بشكل موثوق، فإن Dynamic (مثل الإعلانات أو الطوابع الزمنية التي تحتفظ بالتحديث)، فأنا أطبطب البيانات أولا. كنت أتعرف على جميع الأحرف الفضائية (المسافات، علامات التبويب، خطوط جوالاخ) ثم اجعل التجزئة لهذا المحتوى.

أود ليس قم بتضمين مسار ميناء المضيف في التجزئة لأن ذلك لن يضيف أي شيء إلى "بصمات الأصابع". (هذه المعلومات مفيدة لاحقا عندما تضطر إلى طلب خادم الويب لاحقا لمقارنة HTML.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top