كيف تستعيد موقع يعمل بووردبريس من أرشيف جوجل

how-restore-wordpress-site-google-archive_001
نادراً ما قد يحدث هذا لكنه مازال وارداً؛ أن تفقد قاعدة بيانات موقعك بالكامل وفي نفس الوقت ولسبب ما لا تمتلك نسخة احتياطية تستطيع عن طريقها استعادة محتويات الموقع، بالطبع عليك أن تتاكد دائما ان لديك نسخة احتياطية من موقعك، هذه الطريقة فقط تتحدث عن سيناريو من المفترض انه نادر الحدوث.

الفكرة

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

الخطوات

لن اتحدث عن عملية الاسترجاع بالتفصيل فهي سهلة نسبيا في حد ذاتها، ولكن ساتحدث عن الخطوات العامة التي ستتبعها و ابرز المشكلات التي قد تواجهك وطريقة حلها.

الحصول على الروابط

هذه الخطوة تفترض انك تستخدم بناء روابط يختلف عن الافتراضي ولا يعتمد فقط على المعرّف الرقمي للمقالة.

هذه هي الخطوة الاهم على الإطلاق في العملية كلها، تتلخص هذه الخطوة في تجميع كل روابط موقعك المؤرشفة في جوجل ووضعهم في قائمة قابلة لمعالجتها والتعامل معها برمجيا بعد ذلك – فمثلا تقوم بتجميعهم في ملف نصي بامتداد txt بحيث يكون كل رابط في سطر منفصل -.

تتم هذه الخطوة بالذهاب لمحرك البحث "جوجل" وكتابة نطاق موقعك مسبوقا بـ "site:" كالتالي:

[code]site:ar-wp.com[/code]

بهذه الطريقة سيقوم جوجل بعرض كل الروابط المؤرشفة لهذا النطاق، تقوم بحفظ كل صفحة من صفحات النتائج كملف HTML وباستخدام التعبير القياسي regex المناسب تقوم باستخراج الروابط من هذه الصفحات وحفظها في ملف نصي منفصل بحيث يكون كل رابط في سطر مستقل.

المشكلات التي ستواجهك في هذه الخطوة

أولا بالنسبة لتعدد انواع الروابط

الروابط التي نقصد تجميعها من اجل الحصول على محتواها هي روابط المقالات فقط –وربما الصفحات ايضا- اما الروابط الاخرى مثل روابط التصنيفات، والوسوم... وغيرها – اي كل الروابط التي تعتبر كارشيف في ووردبريس- لن نحتاجها حيث انها ستبنى تلقائيا مع عودة المقالات في اماكنها كما كانت.

المشكلة ان جوجل يؤرشف كل هذه الانواع، بالتالي سيكون علينا منع ظهورها في نتائج البحث، وهنا يأتي دور ما يسمى الـ search operators في جوجل وهي عبارة عن مجموعة من الكلمات تستخدم لفلترة نتائج البحث بطريقة معينة، استخدمنا منها بالفعل في هذه الخطوة الـ operator المسمى site كي نظهر النتائج الخاصة بنطاق او موقع محدد فقط.

الـ operator الثاني الذي سنستخدمه هو "inurl" سنستخدمه لاظهار النتائج التي تحتوي روابطها على كلمات محددة او منع ظهورها.
سأفترض أنني في تركيبة روابط موقعي تكون المقالات على هذا الشكل:
[code]example.com/post/post-name[/code]
بالتالي إذا أردت أن أظهر نتائج المقالات فقط ساظهرها بهذا الشكل:
[code]site:example.com inurl:post[/code]

يمكن أيضا اسخدامه بطريقة اخرى، فمثلاً إذا كانت تركيبة الروابط على هذا الشكل:
[code]example.com/post-name[/code]
لا يوجد في هذه التركيبة ما يميز المقالات عن غيرها لذلك يمكنني ان استبعد البقية بما يميزهم هكذا:
[code]site:example.com -inurl:category –inurl:tag –inurl:author[/code]

بوضع علامة السالب "-" يعني انني ساظهر كل النتائج ما عدا تلك التي تحتوي روابطها على هذه الكلمات وبالتالي ستتبقى روابط المقالات فقط.

لاحظ أن الـ search operators تهمل الرموز الخاصة مثل "/" بالتالي استخدام كلمات فقط قد يخفي نتيجة مرغوبة بغير قصد؛ فاستخدام "-inurl:category" سيؤدي الى عدم ظهور روابط لمقالات تحتوي كلمة category وليس النتائج الخاصة بالتصنيفات فقط.

ثانيا مشكلة محدودية نتائج البحث

ستظهر هذه المشكلة في المواقع التي تحتوي مقالات تتخطى الألف فمحرك البحث لن يظهر اكثر من 1000 نتيجة بأي حال من الاحوال حتى لو كان عدد النتائج الحقيقية اكثر من ذلك.

الحل في هذه الحالة هو استخدام قائمة باكبر عدد ممكن من الكلمات المختلفة المتوقع وجودها في الموقع ، ثم البحث عن كل كلمة من هذه الكلمات وتجميع النتائج الخاصة بها، ثم فلترتها بعد ذلك وحذف المكرر منها.

الفكرة هنا هي انه مع اختلاف الكلمة المبحوث عنها في كل مرة ستختلف النتائج التي تظهر ولو بشكل ضئيل ومع تكرار البحث باستخدام كلمات مختلفة كثيرة يمكن تجميع هذا الاختلاف في النتائج للحصول على روابط جديدة في كل مرة.
يمكن الاستعانة بالـ search operators ايضا في هذا.

ثالثا الصفحات الكثيرة للنتائج

كما قلت سابقا في هذه الخطوة اننا من اجل تجميع الروابط سنقوم بحفظ كل صفحة من صفحات النتائج، سيكون الأمر سهلاً اذا كان الموقع صغيراً حيث اننا سنقوم بالتنقل في كل صفحة من صفحات النتائج وحفظها وينتهي الامر في مرة واحدة من البحث.
ولكن في المواقع الكبيرة والتي ستتطلب مني البحث بكلمات كثيرة للتغلب على محدودية نتائج البحث ستكون عملية التنقل بين صفحات النتائج في كل مرة مرهقة.
في هذه الحالة الحل هنا هو استخدام اضافة الفايرفوكس المسماة repagination باستخدام هذه الإضافة سيمكنك بخطوة واحدة اظهار كل نتائج البحث في صفحة واحدة ثم حفظها بدلا من التنقل بين الصفحات المتعددة للنتائج.
how-restore-wordpress-site-google-archive_002

البدء في عملية استعادة المحتوى

بعدما تنتهي من الخطوة السابقة ستكون المحصلة هي مجموعة من الروابط الكثيرة الخاصة بموقعك محفوظة في ملف نصي، في هذه الخطوة سنستخدم هذه الروابط لاستعادة محتواها من ارشيف جوجل كالتالي:

ستقوم بعمل سكربت – او اضافة ووردبريس - بسيط بالـ PHP مثلا يقوم بالخطوات التالية:

- جلب كل رابط من الروابط المخزنة في الملف النصي ثم جعلها على هذا الشكل:
[code]http://webcache.googleusercontent.com/search?q=cache:$URL&client=firefox-a&hs=HpS&rls=org.mozilla:en-US:official&strip=1[/code]
حيث أن $URL هو احد الروابط المخزنة في الملف النصي.

- جلب محتوى كل رابط، اما باستخدام دالة file_get_contents أو مكتبة CURL ، أو اذا كنت ستعمل من داخل ووردبريس يمكنك استخدام wp_remote_get.

- البحث داخل محتوى كل رابط باستخدام الـ regex للحصول على اجزاء المقال "العنوان، المحتوى، التاريخ، التصنيف،..." سيساعد على هذا البناء الجيد والقياسي للقالب المستخدم عندما قام جوجل بارشفة الصفحة.

- بعد الحصول على اجزاء المقال يمكنك ادخالها مباشرة في قاعدة البيانات او تخزين كل مقالة باجزائها في ملف منفصل ثم ادخالهم في قاعدة البيانات في خطوة منفصلة، يمكنك استخدام دالة wp_insert_post اذا كنت تعمل داخل ووردبريس.

المشاكل التي ستقابلك في هذه الخطوة

المشكلة الأبرز هنا أن جوجل سيقوم بعمل حظر لعنوان الـ IP الخاص بك بعدما يقوم السكربت او الاضافة باستعادة 70 رابط تقريبا، وهناك طريقتين لحل هذه المشكلة:

الطريقة الاولى: اعادة تشغيل الروتر في كل مرة يتم حظر الـ IP الخاص بك، ليتم توليد عنوان IP جديد ومن ثم مواصلة عملية استعادة الروابط، ولكن هذه الطريقة تعد غير عملية خصوصا مع العدد الكبير للروابط التي تود استعادتها.

الطريقة الثانية: وهي الانسب، ستقوم باستخدام أحد الـ online proxies للتحايل على جوجل.

الفكرة هنا ان هذا البروكسي يوفر لك نطاق واسع الى حد ما من الـ IPs التي يمكنك استخدامها، ويمكنك جعل السكربت يقوم بتوليد رقم IP عشوائي داخل نطاق IPs البروكسي في كل مرة يتصل بها بارشيف جوجل بالتالي سيقلل فرصة حظر احد هذه الـ IPs عن طريق اتاحة مساحة من الزمن لاحتمالية تكرار نفس الـ IP في عملية اتصال تالية.

بهذا تكون تمت خطوات عملية الاستعادة بنجاح، وانتهت مقالتنا لهذا اليوم 🙂 .

طبيب تحت التدريب، يهوى البرمجة وتطوير المواقع. موقعي: BBcolors.com تحت الانشاء