يواجه مالكو المواقع الإلكترونية ومدراء SEO تحديًا مستمرًا في الحفاظ على صحة فهرسة مواقعهم في محرك بحث جوجل. من بين هذه التحديات، تبرز مشكلة الروابط المؤرشفة التي تؤدي إلى صفحات الخطأ 404 (Not Found). هذه الروابط لا تقدم تجربة مستخدم سيئة فحسب، بل قد تؤثر سلبًا على تقييم جوجل لموقعك.
عادةً ما يتم التعامل مع هذه الروابط من خلال أداة "عمليات الإزالة" (URL Removals) المتاحة في Google Search Console. ومع ذلك، فإن هذه الأداة مصممة لإدخال وإزالة الروابط بشكل فردي، مما يجعلها غير عملية ومستهلكة للوقت بشكل كبير عندما يتعلق الأمر بالتعامل مع عدد كبير من روابط 404 المؤرشفة.
في هذا المقال التقني المفصل، سنتناول كيفية تجاوز هذه القيود واستخدام قوة Google Search Console API (Application Programming Interface) لتنفيذ عمليات إزالة مجمعة (Bulk Removal) لروابط 404 المؤرشفة. سنشرح الخطوات اللازمة بدءًا من إعداد بيئة التطوير ووصولًا إلى تنفيذ سكربت برمجي بلغة Python لتسريع وتبسيط هذه العملية الحيوية لتحسين صحة موقعك على الويب.
لماذا تعتبر إزالة روابط 404 المؤرشفة أمرًا مهمًا؟
قبل الخوض في التفاصيل التقنية، من الضروري فهم أهمية معالجة روابط 404 المؤرشفة:
- تجربة المستخدم (UX): عندما ينقر المستخدم على رابط في نتائج بحث جوجل ويتوجه إلى صفحة 404، فإنه يصاب بالإحباط وقد يغادر موقعك على الفور. ارتفاع معدل الارتداد (Bounce Rate) يمكن أن يشير لجوجل إلى أن موقعك لا يقدم قيمة للمستخدمين.
- سمعة الموقع وموثوقيته: كثرة الروابط المعطلة قد تعطي انطباعًا بأن الموقع مهمل وغير مُدار بشكل جيد، مما يؤثر على ثقة المستخدمين وجوجل على حد سواء.
- ميزانية الزحف (Crawl Budget): يخصص جوجل "ميزانية زحف" لكل موقع ويب، وهي عدد الصفحات التي يمكن لعناكب جوجل (Googlebot) الزحف إليها وفهرستها في فترة زمنية معينة. عندما يحاول Googlebot الوصول إلى روابط 404، فإنه يستهلك جزءًا من هذه الميزانية دون جدوى، مما قد يؤخر فهرسة المحتوى الجديد والمهم.
- تحسين محركات البحث (Search Engine Optimization - SEO): على الرغم من أن وجود عدد قليل من روابط 404 لا يؤثر بشكل كبير على الترتيب، إلا أن العدد الكبير منها قد يشير إلى مشاكل هيكلية في الموقع ويؤثر بشكل غير مباشر على أداء SEO العام.
التحدي مع أداة الإزالة الفردية في Google Search Console:
توفر Google Search Console أداة "عمليات الإزالة" التي تسمح لمالكي المواقع بطلب إزالة عناوين URL مؤقتًا من نتائج بحث جوجل ومن ذاكرة التخزين المؤقت. ومع ذلك، تتطلب هذه الأداة إدخال كل رابط على حدة، مما يجعلها غير عملية بالمرة عند التعامل مع مئات أو حتى آلاف الروابط 404 المؤرشفة. هذه العملية تستغرق وقتًا طويلاً وتزيد من احتمالية الخطأ البشري.
يوفر Google Search Console API حلاً قويًا لهذه المشكلة من خلال السماح بالتفاعل المبرمج مع بيانات وأدوات Search Console. باستخدام هذا الـ API، يمكننا كتابة سكربت يقوم بما يلي:
- قراءة قائمة كبيرة من روابط 404.
- إنشاء طلبات إزالة لكل رابط.
- إرسال هذه الطلبات بشكل مجمع إلى Google Search Console API.
- تتبع حالة طلبات الإزالة.
هذه الطريقة توفر الوقت والجهد بشكل كبير وتسمح بإدارة أكثر فعالية للروابط المؤرشفة غير المرغوب فيها.
المتطلبات الأساسية لإستخدام Google Search Console API:
قبل البدء في استخدام Google Search Console API، تحتاج إلى التأكد من توفر المتطلبات التالية:
- حساب Google Cloud Platform (GCP): يجب أن يكون لديك حساب نشط على Google Cloud Platform. إذا لم يكن لديك حساب، يمكنك إنشاء حساب مجاني.
- مشروع Google Cloud: داخل حساب GCP، تحتاج إلى إنشاء مشروع جديد. هذا المشروع سيكون بمثابة الحاوية لموارد API الخاصة بك.
- تفعيل Google Search Console API: يجب تفعيل خدمة Google Search Console API داخل مشروعك في Google Cloud.
- بيئة تطوير Python: سنستخدم لغة البرمجة Python في هذا المثال، لذا يجب أن تكون Python مثبتة على جهازك. يفضل استخدام الإصدار 3.6 أو أحدث. دليل تثبيت Python.
- أداة إدارة الحزم Pip: عادةً ما يتم تثبيت Pip مع Python ويستخدم لتثبيت المكتبات الخارجية.
- مكتبات Python الضرورية: ستحتاج إلى تثبيت بعض مكتبات Python التي تسهل التفاعل مع Google APIs، وهي:
- google-api-python-client: المكتبة الرئيسية للتفاعل مع Google APIs.
- google-auth-httplib2: يوفر دعم المصادقة HTTP لـ Google APIs.
- google-auth-oauthlib: يساعد في عملية الحصول على بيانات اعتماد OAuth 2.0.
Bash
pip --version
أو
Bash
pip3 --version
أما تثبيت مكتبات Python الضرورية، سنتمكن من تحميلها وتثبيتها عبر استخدام الأوامر التالية:
Bash
pip install --upgrade google-api-python-client
Bash
pip install --upgrade google-auth-httplib2
Bash
pip install --upgrade google-auth-oauthlib
خطوات إعداد Google Cloud Platform وتفعيل Search Console API:
- تسجيل الدخول: إلى Google Cloud Console.
- إنشاء مشروع جديد: إذا لم يكن لديك مشروع بالفعل، انقر على القائمة المنسدلة أعلى الصفحة بجوار شعار Google Cloud واختر "مشروع جديد" (New Project). أدخل اسمًا وصفيًا لمشروعك (مثل "Search Console API Access") وانقر على "إنشاء" (Create).
- تحديد المشروع: بعد إنشاء المشروع، تأكد من تحديده في شريط الأدوات العلوي.
- تفعيل Google Search Console API:
- في شريط البحث العلوي، ابحث عن "API Library" وانقر على النتيجة الأولى.
- في صفحة "API Library"، ابحث عن "Google Search Console API".
- انقر على نتيجة "Google Search Console API".
- إذا لم تكن الخدمة مفعلة بالفعل، سترى زر "تفعيل" (Enable). انقر عليه لتفعيل API لمشروعك.
إنشاء بيانات اعتماد OAuth 2.0:
لتتمكن من استخدام API بشكل آمن، تحتاج إلى إنشاء بيانات اعتماد OAuth 2.0 لتخويل تطبيقك (السكربت Python الذي ستشغله) للوصول إلى بيانات Google Search Console الخاصة بك.
- الانتقال إلى صفحة بيانات الاعتماد: في القائمة الجانبية اليسرى، انتقل إلى "APIs & Services" ثم "Credentials".
- إنشاء بيانات اعتماد: انقر على زر "+ CREATE CREDENTIALS" واختر "OAuth client ID".
- تحديد نوع التطبيق: من قائمة "Application type"، اختر "Desktop application".
- إدخال اسم: أدخل اسمًا وصفيًا لبيانات الاعتماد الخاصة بك (مثل "Search Console Script").
- إنشاء: انقر على زر "Create".
- تنزيل ملف JSON: بعد الإنشاء، سيظهر لك نافذة منبثقة تحتوي على معلومات بيانات الاعتماد. انقر على زر "DOWNLOAD JSON" لحفظ ملف JSON على جهازك. هذا الملف يحتوي على مفاتيح وبيانات سرية ضرورية لمصادقة تطبيقك. احتفظ بهذا الملف في مكان آمن وتذكر مساره.
كتابة سكربت Python لتنفيذ الإزالة المجمعة:
الآن، سنقوم بكتابة سكربت Python الذي سيقرأ قائمة الروابط 404 ويرسل طلبات إزالة مجمعة باستخدام Google Search Console API.
Python
# Google Search Console Bulk URL Removal by www.Ghorab.ws ©
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import os
import pickle
import time
# **الكلمة المفتاحية:** قائمة الروابط 404 التي سيتم إزالتها
urls_to_remove = [
"https://example.com/old-page-1",
"https://example.com/broken-link-2",
"https://example.com/outdated-content-3",
# أضف المزيد من الروابط هنا
]
# نطاق الوصول المطلوب لـ Google Search Console API
SCOPES = ['https://www.googleapis.com/auth/webmasters']
def main():
creds = None
# التحقق من وجود ملف بيانات الاعتماد المخزن مؤقتًا
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# إذا لم تكن هناك بيانات اعتماد متاحة أو كانت منتهية الصلاحية، قم بتنفيذ تدفق المصادقة
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
# **الكلمة المفتاحية:** إنشاء تدفق المصادقة باستخدام بيانات اعتماد OAuth 2.0
flow = InstalledAppFlow.from_client_secrets_file(
'path/to/your/credentials.json', SCOPES) # استبدل 'path/to/your/credentials.json' بالمسار الفعلي لملف JSON الذي قمت بتنزيله
creds = flow.run_local_server(port=0)
# حفظ بيانات الاعتماد للجلسات القادمة
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
# **الكلمة المفتاحية:** بناء خدمة Google Search Console API
service = build('webmasters', 'v3', credentials=creds)
# استبدل 'your-site.com' بعنوان موقعك الإلكتروني في Google Search Console (مع البروتوكول الصحيح: http أو https)
site_url = 'https://example.com'
# **الكلمة المفتاحية:** تنفيذ عمليات الإزالة المجمعة
for url in urls_to_remove:
try:
# **الكلمة المفتاحية:** إرسال طلب إزالة عنوان URL
request = service.urlRemoval().insert(
siteUrl=site_url,
body={'url': url, 'type': 'urlRemoval'}
)
response = request.execute()
print(f"تم إرسال طلب إزالة للرابط: {url}")
print(f"الاستجابة: {response}")
time.sleep(1) # إضافة تأخير بسيط لتجنب تجاوز حدود API
except Exception as e:
print(f"حدث خطأ أثناء محاولة إزالة الرابط {url}: {e}")
if __name__ == '__main__':
main()
شرح وتفسير الكود
- استيراد المكتبات: يتم استيراد المكتبات الضرورية للتفاعل مع Google API وعمليات المصادقة وإدارة الملفات.
- urls_to_remove: هذه القائمة تحتوي على عناوين URL لصفحات 404 التي تريد إزالتها من أرشفة جوجل. قم بتعديل هذه القائمة وإضافة جميع الروابط المطلوبة.
- SCOPES: يحدد هذا المتغير نطاق الوصول الذي يطلبه السكربت. في هذه الحالة، نطلب الوصول إلى بيانات مشرفي المواقع (Webmasters).
- main() الدالة الرئيسية:
- تحميل بيانات الاعتماد: يتحقق السكربت أولاً مما إذا كان هناك ملف token.pickle موجودًا. هذا الملف يحتوي على بيانات الاعتماد التي تم الحصول عليها مسبقًا، مما يجنب الحاجة إلى إعادة المصادقة في كل مرة يتم تشغيل السكربت.
- تنفيذ تدفق المصادقة: إذا لم يكن ملف token.pickle موجودًا أو كانت بيانات الاعتماد منتهية الصلاحية، يقوم السكربت بتنفيذ تدفق مصادقة OAuth 2.0. سيفتح متصفح الويب الخاص بك ويطلب منك تسجيل الدخول بحساب Google الخاص بك ومنح الإذن للتطبيق للوصول إلى بيانات Search Console. تأكد من اختيار الحساب الذي يمتلك موقع الويب في Google Search Console.
- بناء خدمة API: بعد الحصول على بيانات الاعتماد، يتم بناء خدمة Google Search Console API باستخدام الدالة build().
- تحديد site_url: قم بتغيير قيمة المتغير site_url إلى عنوان موقعك الإلكتروني كما يظهر في Google Search Console (تأكد من تضمين http:// أو https://).
- حلقة التكرار للإزالة المجمعة: يتم التكرار عبر قائمة urls_to_remove. لكل رابط:
- يتم إنشاء طلب إزالة باستخدام الدالة service.urlRemoval().insert(). يتم تحديد عنوان URL ونوع الإزالة (urlRemoval).
- يتم إرسال الطلب باستخدام الدالة request.execute().
- يتم طباعة رسالة تأكيد والاستجابة من API.
- يتم إضافة تأخير بسيط باستخدام time.sleep(1) لتجنب إرسال عدد كبير جدًا من الطلبات في فترة زمنية قصيرة، مما قد يؤدي إلى تجاوز حدود استخدام API.
- في حالة حدوث أي خطأ أثناء محاولة إزالة رابط معين، يتم طباعة رسالة خطأ.
- تشغيل السكربت: يتم استدعاء الدالة main() عند تشغيل السكربت.
تشغيل السكربت وتنفيذ الإزالة المجمعة:
1. حفظ السكربت: احفظ الكود أعلاه في ملف باسم remove_404_urls.py (أو أي اسم آخر تختاره).
2. وضع ملف بيانات الاعتماد: تأكد من وضع ملف JSON الذي قمت بتنزيله من Google Cloud Console (في خطوة إنشاء بيانات اعتماد OAuth 2.0) في نفس المجلد الذي حفظت فيه سكربت Python، أو قم بتعديل المسار في السطر التالي من السكربت ليطابق المسار الفعلي للملف:
Python
flow = InstalledAppFlow.from_client_secrets_file(
'path/to/your/credentials.json', SCOPES)
3. فتح سطر الأوامر (Terminal/Command Prompt): افتح سطر الأوامر أو الطرفية على نظام التشغيل الخاص بك.
4. الانتقال إلى المجلد: استخدم الأمر cd للانتقال إلى المجلد الذي يحتوي على السكربت وملف بيانات الاعتماد.
5. تشغيل السكربت: قم بتشغيل السكربت باستخدام الأمر التالي:
Bash
python remove_404_urls.py
6. المصادقة: عند تشغيل السكربت للمرة الأولى، سيحاول فتح متصفح الويب الخاص بك. قد تحتاج إلى نسخ عنوان URL الذي يظهر في الطرفية ولصقه في المتصفح للمتابعة في عملية المصادقة ومنح الإذن للسكربت. اتبع التعليمات التي تظهر على الشاشة.
7. مراقبة النتائج: بعد المصادقة، سيبدأ السكربت في إرسال طلبات الإزالة لكل رابط في قائمة urls_to_remove. ستظهر لك رسائل في سطر الأوامر تشير إلى حالة كل طلب.
مراقبة حالة طلبات الإزالة في Google Search Console:
يمكنك تتبع حالة طلبات الإزالة التي تم إرسالها عبر API في قسم "عمليات الإزالة" في Google Search Console. ستظهر الطلبات الجديدة في قائمة الانتظار وقد تستغرق بعض الوقت للمعالجة.
اعتبارات مهمة وحدود الاستخدام:
- الحدود: Google Search Console API قد يفرض حدودًا على عدد الطلبات التي يمكنك إرسالها في فترة زمنية معينة. إذا كان لديك عدد كبير جدًا من الروابط، قد تحتاج إلى تقسيمها وتشغيل السكربت على دفعات مع إضافة فترات تأخير أطول بين الطلبات. راجع وثائق Google Search Console API للحصول على معلومات حول حدود الاستخدام الحالية.
- الدقة في قائمة الروابط: تأكد من أن قائمة urls_to_remove تحتوي فقط على الروابط التي تريد إزالتها بشكل صحيح. أي خطأ في هذه القائمة قد يؤدي إلى إزالة صفحات مهمة عن طريق الخطأ.
- وقت المعالجة: قد يستغرق ظهور تأثير طلبات الإزالة في نتائج بحث جوجل بعض الوقت. لا تتوقع أن تختفي الروابط فورًا بعد إرسال الطلب.
- إزالة مؤقتة: طلبات الإزالة التي يتم إرسالها عبر API (وكذلك عبر أداة الإزالة في Search Console) هي عمليات إزالة مؤقتة من نتائج البحث وذاكرة التخزين المؤقت. إذا كان الرابط لا يزال موجودًا على موقعك ويتم الزحف إليه مرة أخرى، فقد يظهر في نتائج البحث مرة أخرى في المستقبل.
إرسال تعليق
1. نأمل الحفاظ علي الذوق العام وآراء وتعليقات الغير.
2. تجنب استخدام الكلمات البذيئة وتجنب أسلوب الهجوم والتجريح.
3. تذكر، ما يلفظ من قول إلا لديه رقيب عتيد.
4. يجب الالتزام التام بجميع قوانين سياسة الخصوصية.
5. يمكنك نشر رابط صورة أو فيديو ليتم عرضها في التعليق.