مولد وكيل المستخدم العشوائي لاختبار تطوير الويب
قم بإنشاء سلاسل وكيل مستخدم واقعية مع خيارات للتصفية حسب نوع الجهاز، عائلة المتصفح، ونظام التشغيل. مثالي لاختبار تطوير الويب وفحوصات التوافق.
مولد وكيل المستخدم العشوائي
توليد سلاسل وكيل مستخدم عشوائية وواقعية لاختبار تطوير الويب.
وكيل المستخدم المُولد
التوثيق
مولد وكيل المستخدم العشوائي
المقدمة
سلسلة وكيل المستخدم هي معرف نصي محدد ترسله متصفحات الويب والتطبيقات الأخرى إلى المواقع الإلكترونية لتحديد نفسها. تحتوي هذه السلسلة عادةً على معلومات حول المتصفح ونظام التشغيل ونوع الجهاز ومحرك العرض المستخدم. بالنسبة لمطوري الويب والمختبرين، فإن الوصول إلى مجموعة متنوعة من سلاسل وكيل المستخدم الواقعية أمر ضروري لاختبار توافق الموقع الوظيفي والاستجابة عبر منصات مختلفة.
تقوم أداة مولد وكيل المستخدم العشوائي هذه بإنشاء سلاسل وكيل مستخدم تبدو حقيقية بناءً على المعلمات التي تختارها. يمكنك التصفية حسب نوع الجهاز (سطح المكتب أو الهاتف المحمول)، وعائلة المتصفح (كروم، فايرفوكس، سفاري، أو إيدج)، ونظام التشغيل لإنشاء وكلاء مستخدمين يتناسبون مع متطلبات الاختبار الخاصة بك. توفر الأداة واجهة بسيطة مع خيارات لنسخ السلسلة المولدة بنقرة واحدة وتوليد سلاسل عشوائية جديدة على الفور.
هيكل وكيل المستخدم
تتبع سلاسل وكيل المستخدم أنماطًا محددة اعتمادًا على المتصفح والمنصة، لكنها تحتوي عمومًا على عدة مكونات شائعة:
- معرف المتصفح: يبدأ عادةً بـ "Mozilla/5.0" لأسباب تاريخية تتعلق بالتوافق
- معلومات النظام/نظام التشغيل: تفاصيل حول نظام التشغيل (ويندوز، ماك أو إس، أندرويد، آي أو إس)
- محرك المتصفح: محرك العرض (مثل Gecko، WebKit، أو Blink)
- تفاصيل المتصفح: اسم المتصفح المحدد وإصدارها
إليك تحليل لهياكل وكيل المستخدم النموذجية لمتصفحات رئيسية:
كروم
1Mozilla/5.0 (platform; details) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/version Safari/537.36
2
فايرفوكس
1Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
2
سفاري
1Mozilla/5.0 (platform) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion
2
إيدج
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2
يختلف قسم المنصة بشكل كبير بين الأجهزة المكتبية والمحمولة:
أمثلة على سطح المكتب:
- ويندوز:
Windows NT 10.0; Win64; x64
- ماك أو إس:
Macintosh; Intel Mac OS X 10_15_7
- لينكس:
X11; Linux x86_64
أمثلة على الهاتف المحمول:
- أندرويد:
Linux; Android 12; SM-G998B
- آي أو إس:
iPhone; CPU iPhone OS 15_4 like Mac OS X
اختلافات نوع الجهاز
وكلاء المستخدم على سطح المكتب
تتضمن وكلاء المستخدم على سطح المكتب معلومات محددة حول نظام التشغيل، وتفاصيل المعمارية (مثل x86_64 أو Win64)، وأحيانًا تفضيلات اللغة. تميل إلى أن تكون أكثر اتساقًا عبر المتصفحات مقارنةً بوكلاء المستخدم على الهاتف المحمول.
وكلاء المستخدم على الهاتف المحمول
تحتوي وكلاء المستخدم على الهاتف المحمول على معلومات طراز الجهاز، وإصدارات نظام التشغيل المحمول، وغالبًا ما تتضمن كلمة "Mobile" في النهاية. سيشمل متصفح سفاري على أجهزة آي أو إس معرّفات "iPhone" أو "iPad"، بينما تتضمن أجهزة أندرويد الشركة المصنعة ورقم الطراز.
أنماط إصدار المتصفح
يتبع كل متصفح أنماط إصدار مختلفة:
- كروم: يستخدم أرقام إصدار مكونة من أربعة أجزاء (مثل 96.0.4664.110)
- فايرفوكس: عادةً ما يستخدم أرقام إصدار مكونة من جزئين أو ثلاثة (مثل 95.0 أو 95.0.2)
- سفاري: يستخدم أرقام إصدار بسيطة مثل 15.2
- إيدج: يستخدم أرقام إصدار مشابهة لكروم ولكن بإصدار إيدج الخاص به (مثل 96.0.1054.62)
حالات الاستخدام
توليد وكيل المستخدم العشوائي له عدة تطبيقات مهمة في تطوير الويب والاختبار:
-
اختبار توافق المتصفح عبر الأنظمة: اختبار كيفية عرض موقعك ووظائفه عبر متصفحات مختلفة دون الحاجة إلى تثبيت متصفحات متعددة أو استخدام أجهزة متعددة.
-
اختبار التصميم المتجاوب: التحقق من أن موقعك يكتشف بشكل صحيح الأجهزة المحمولة وسطح المكتب ويقدم التخطيط المناسب.
-
التحقق من صحة اكتشاف الميزات: التأكد من أن آليات اكتشاف الميزات في موقعك تعمل بشكل صحيح لقدرات المتصفح المختلفة.
-
اختبار ضمان الجودة والاختبار الآلي: دمج وكلاء مستخدمين مختلفين في نصوص الاختبار الآلي الخاصة بك لمحاكاة بيئات مستخدمين متنوعة.
-
اختبار الأداء: تحليل كيفية أداء موقعك عند الوصول إليه من بيئات متصفح مختلفة.
-
تصحيح الأخطاء المتعلقة بالمتصفحات المحددة: إعادة إنتاج وإصلاح الأخطاء التي تحدث فقط في متصفحات أو إصدارات معينة.
-
اختبار واجهة برمجة التطبيقات: اختبار كيفية تعامل واجهة برمجة التطبيقات الخاصة بك مع الطلبات من تطبيقات عميل مختلفة.
البدائل
بينما يعد مولد وكيل المستخدم العشوائي لدينا مفيدًا للعديد من سيناريوهات الاختبار، هناك طرق بديلة:
-
خدمات اختبار المتصفح: توفر منصات مثل BrowserStack وSauce Labs أو LambdaTest حالات متصفح فعلية للاختبار بدلاً من مجرد محاكاة وكيل المستخدم.
-
أدوات مطور المتصفح: تسمح معظم المتصفحات الحديثة لك بتجاوز وكيل المستخدم من خلال أدوات المطور الخاصة بها، مما يمكن أن يكون مفيدًا للاختبارات السريعة.
-
ملحقات تبديل وكيل المستخدم: ملحقات المتصفح التي تسمح لك بالتبديل بين وكلاء مستخدمين محددين مسبقًا أثناء التصفح.
-
آلات افتراضية أو حاويات: تشغيل حالات فعلية من أنظمة تشغيل ومتصفحات مختلفة للاختبار الأكثر دقة.
-
اختبار المتصفح بدون رأس: استخدام أدوات مثل Puppeteer أو Selenium للتحكم برمجيًا في المتصفحات مع إعدادات وكيل مستخدم مختلفة.
كل بديل له مزاياه الخاصة وقد يكون أكثر ملاءمة اعتمادًا على احتياجات الاختبار الخاصة بك ومواردك.
التاريخ
تعود فكرة سلسلة وكيل المستخدم إلى الأيام الأولى من شبكة الويب العالمية. يأتي مصطلح "وكيل المستخدم" من مواصفة HTTP، حيث يشير إلى تطبيق العميل الذي يقوم بإجراء طلب إلى خادم ويب.
الأيام الأولى (التسعينيات)
تضمنت أول متصفح مستخدم على نطاق واسع، NCSA Mosaic، سلسلة وكيل مستخدم بسيطة تحدد اسم المتصفح وإصداره. عندما تم إصدار Netscape Navigator، استخدم تنسيقًا مشابهًا. ومع ذلك، مع بدء خوادم الويب في تقديم محتوى مختلف بناءً على المتصفح، نشأت ممارسة تُعرف باسم "تخمين المتصفح".
حروب المتصفحات وتزوير وكيل المستخدم (أواخر التسعينيات)
خلال حروب المتصفحات بين Netscape وInternet Explorer، غالبًا ما كانت المواقع تقدم محتوى محسّنًا حصريًا لمتصفحات معينة. لضمان التوافق، بدأت المتصفحات في تضمين سلاسل تحدد نفسها كمتصفحات أخرى. لهذا السبب لا تزال معظم المتصفحات الحديثة تتضمن "Mozilla" في سلاسل وكيل المستخدم الخاصة بها، إشارة إلى الاسم الرمزي لشفرة Netscape Navigator.
ثورة الهاتف المحمول (2000-2010)
أدى ظهور الأجهزة المحمولة إلى إدخال تعقيدات جديدة على سلاسل وكيل المستخدم. كان يجب على المتصفحات المحمولة تحديد نفسها كهواتف محمولة لتلقي المحتوى المناسب، مما أدى إلى إضافة معرّفات الأجهزة وعناصر محددة بالهاتف المحمول.
التحديات الحديثة (2010-الحاضر)
مع نمو النظام البيئي للويب بشكل أكثر تعقيدًا، أصبحت سلاسل وكيل المستخدم أكثر تعقيدًا. تحتوي الآن على إشارات إلى محركات عرض متعددة (مثل "AppleWebKit" و"Gecko") لأسباب تتعلق بالتوافق، حتى عندما لا يتم استخدام تلك المحركات فعليًا.
أدى هذا التعقيد إلى تحديات في تحليل سلاسل وكيل المستخدم بدقة، واقترحت بعض مجموعات معايير الويب إلغاء أو تبسيط سلاسل وكيل المستخدم لصالح تلميحات العميل الأكثر هيكلة. ومع ذلك، لأسباب تتعلق بالتوافق العكسي، تظل سلسلة وكيل المستخدم التقليدية جزءًا أساسيًا من تصفح الويب.
أمثلة على التعليمات البرمجية
إليك أمثلة حول كيفية العمل مع سلاسل وكيل المستخدم في لغات برمجة مختلفة:
1// JavaScript: اكتشاف نوع المتصفح من سلسلة وكيل المستخدم
2function detectBrowser() {
3 const userAgent = navigator.userAgent;
4
5 if (userAgent.indexOf("Firefox") > -1) {
6 return "فايرفوكس";
7 } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8 return "متصفح سامسونج";
9 } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10 return "أوبرا";
11 } else if (userAgent.indexOf("Trident") > -1) {
12 return "إنترنت إكسبلورر";
13 } else if (userAgent.indexOf("Edge") > -1) {
14 return "إيدج";
15 } else if (userAgent.indexOf("Chrome") > -1) {
16 return "كروم";
17 } else if (userAgent.indexOf("Safari") > -1) {
18 return "سفاري";
19 } else {
20 return "غير معروف";
21 }
22}
23
24// الاستخدام
25console.log("أنت تستخدم: " + detectBrowser());
26
1# بايثون: تعيين وكيل مستخدم مخصص في الطلبات
2import requests
3
4def fetch_with_user_agent(url, user_agent):
5 headers = {
6 'User-Agent': user_agent
7 }
8 response = requests.get(url, headers=headers)
9 return response.text
10
11# مثال على الاستخدام
12chrome_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
13content = fetch_with_user_agent('https://example.com', chrome_ua)
14print(content[:100]) # طباعة أول 100 حرف من الاستجابة
15
1<?php
2// PHP: اكتشاف الأجهزة المحمولة باستخدام سلسلة وكيل المستخدم
3function isMobileDevice() {
4 $userAgent = $_SERVER['HTTP_USER_AGENT'];
5 $mobileKeywords = array('Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone');
6
7 foreach ($mobileKeywords as $keyword) {
8 if (stripos($userAgent, $keyword) !== false) {
9 return true;
10 }
11 }
12 return false;
13}
14
15// الاستخدام
16if (isMobileDevice()) {
17 echo "أنت تستخدم جهازًا محمولًا.";
18} else {
19 echo "أنت تستخدم جهاز سطح مكتب.";
20}
21?>
22
1// جافا: توليد وكيل مستخدم عشوائي
2import java.util.Random;
3
4public class UserAgentGenerator {
5 private static final String[] CHROME_VERSIONS = {"96.0.4664.110", "95.0.4638.69", "94.0.4606.81"};
6 private static final String[] OS_VERSIONS = {"Windows NT 10.0; Win64; x64",
7 "Macintosh; Intel Mac OS X 10_15_7",
8 "X11; Linux x86_64"};
9
10 public static String generateRandomChromeUserAgent() {
11 Random random = new Random();
12 String osVersion = OS_VERSIONS[random.nextInt(OS_VERSIONS.length)];
13 String chromeVersion = CHROME_VERSIONS[random.nextInt(CHROME_VERSIONS.length)];
14
15 return "Mozilla/5.0 (" + osVersion + ") AppleWebKit/537.36 (KHTML, like Gecko) " +
16 "Chrome/" + chromeVersion + " Safari/537.36";
17 }
18
19 public static void main(String[] args) {
20 System.out.println(generateRandomChromeUserAgent());
21 }
22}
23
1# روبي: تحليل سلسلة وكيل المستخدم
2require 'user_agent_parser'
3
4def parse_user_agent(user_agent_string)
5 parser = UserAgentParser::Parser.new
6 client = parser.parse(user_agent_string)
7
8 {
9 browser_name: client.family,
10 browser_version: client.version.to_s,
11 os_name: client.os.family,
12 os_version: client.os.version.to_s,
13 device: client.device.family
14 }
15end
16
17# مثال على الاستخدام
18ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1'
19info = parse_user_agent(ua)
20puts info
21
1// C#: تعيين وكيل المستخدم في HttpClient
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // إنشاء HttpClient مع وكيل مستخدم مخصص
11 using (var httpClient = new HttpClient())
12 {
13 string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
14 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
15
16 try
17 {
18 // إجراء الطلب مع وكيل مستخدم مخصص
19 HttpResponseMessage response = await httpClient.GetAsync("https://example.com");
20 response.EnsureSuccessStatusCode();
21 string responseBody = await response.Content.ReadAsStringAsync();
22
23 Console.WriteLine($"تم استلام الاستجابة مع رمز الحالة: {response.StatusCode}");
24 Console.WriteLine(responseBody.Substring(0, 100) + "..."); // أول 100 حرف
25 }
26 catch (HttpRequestException e)
27 {
28 Console.WriteLine($"خطأ في الطلب: {e.Message}");
29 }
30 }
31 }
32}
33
1// Go: إنشاء طلبات HTTP مع وكلاء مستخدمين مخصصين
2package main
3
4import (
5 "fmt"
6 "io/ioutil"
7 "net/http"
8)
9
10func main() {
11 // إنشاء طلب جديد
12 req, err := http.NewRequest("GET", "https://example.com", nil)
13 if err != nil {
14 fmt.Printf("خطأ في إنشاء الطلب: %s\n", err)
15 return
16 }
17
18 // تعيين وكيل مستخدم مخصص
19 req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")
20
21 // إرسال الطلب
22 client := &http.Client{}
23 resp, err := client.Do(req)
24 if err != nil {
25 fmt.Printf("خطأ في إرسال الطلب: %s\n", err)
26 return
27 }
28 defer resp.Body.Close()
29
30 // قراءة الاستجابة
31 body, err := ioutil.ReadAll(resp.Body)
32 if err != nil {
33 fmt.Printf("خطأ في قراءة الاستجابة: %s\n", err)
34 return
35 }
36
37 fmt.Printf("حالة الاستجابة: %s\n", resp.Status)
38 fmt.Printf("معاينة محتوى الاستجابة: %s\n", body[:100])
39}
40
أنماط وكيل المستخدم الشائعة
إليك بعض الأمثلة على سلاسل وكيل المستخدم الحقيقية لمتصفحات ومنصات مختلفة:
متصفحات سطح المكتب
كروم على ويندوز:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
فايرفوكس على ماك أو إس:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
سفاري على ماك أو إس:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
2
إيدج على ويندوز:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
2
متصفحات الهاتف المحمول
كروم على أندرويد:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
سفاري على آي فون:
1Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1
2
فايرفوكس على أندرويد:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
إنترنت سامسونج على جالاكسي:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/16.0 Chrome/92.0.4515.166 Mobile Safari/537.36
2
المراجع
-
"وكيل المستخدم." وثائق MDN للويب، موزيلا، https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
-
"سلاسل وكيل المستخدم للمتصفح." WhatIsMyBrowser.com، https://www.whatismybrowser.com/guides/the-latest-user-agent/
-
"شرح رأس وكيل المستخدم في HTTP." KeyCDN، https://www.keycdn.com/support/user-agent
-
"تلميحات العميل." وثائق MDN للويب، موزيلا، https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
-
"تاريخ سلسلة وكيل المستخدم للمتصفح." WebAIM، https://webaim.org/blog/user-agent-string-history/
-
"كشف المتصفح باستخدام وكيل المستخدم." مطورو جوجل، https://developer.chrome.com/docs/multidevice/user-agent/
ردود الفعل
انقر على الخبز المحمص لبدء إعطاء التغذية الراجعة حول هذه الأداة
الأدوات ذات الصلة
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك