عنوان IP ل Microsoft 365 وخدمة ويب URL

تساعدك خدمة ويب عنوان IP وعنوان URL ل Microsoft 365 على تحديد حركة مرور شبكة Microsoft 365 وتمييزها بشكل أفضل، مما يسهل عليك تقييم التغييرات وتكوينها والبقاء على اطلاع دائم بها. تحل خدمة الويب المستندة إلى REST هذه محل ملفات XML السابقة القابلة للتنزيل، والتي تم التخلص منها تدريجيا في 2 أكتوبر 2018.

كعميل أو مورد جهاز محيط للشبكة، يمكنك الإنشاء مقابل خدمة الويب لعنوان IP Microsoft 365 وإدخالات FQDN. يمكنك الوصول إلى البيانات مباشرة في مستعرض ويب باستخدام عناوين URL هذه:

كعميل، يمكنك استخدام خدمة الويب هذه من أجل:

  • قم بتحديث البرامج النصية PowerShell للحصول على بيانات نقطة نهاية Microsoft 365 وتعديل أي تنسيق لأجهزة الشبكات الخاصة بك.
  • استخدم هذه المعلومات لتحديث ملفات PAC المنشورة على أجهزة الكمبيوتر العميلة.

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

  • إنشاء واختبار برنامج الجهاز لتنزيل القائمة للتكوين التلقائي.
  • تحقق من الإصدار الحالي.
  • احصل على التغييرات الحالية.

ملاحظة

إذا كنت تستخدم Azure ExpressRoute للاتصال ب Microsoft 365، فيرجى مراجعة Azure ExpressRoute ل Microsoft 365 للتعرف على خدمات Microsoft 365 المدعومة عبر Azure ExpressRoute. راجع أيضا المقالة عناوين URL ل Microsoft 365 ونطاقات عناوين IP لفهم طلبات الشبكة لتطبيقات Microsoft 365 التي تتطلب اتصالا بالإنترنت. سيساعد هذا في تكوين أجهزة الأمان المحيطة بشكل أفضل.

لمزيد من المعلومات، اطلع على:

المعلمات الشائعة

هذه المعلمات شائعة عبر جميع أساليب خدمة الويب:

  • format=<JSON | CSV> —بشكل افتراضي، تنسيق البيانات الذي تم إرجاعه هو JSON. استخدم هذه المعلمة الاختيارية لإرجاع البيانات بتنسيق قيم مفصولة بفواصل (CSV).

  • ClientRequestId=<guid> —A GUID المطلوب الذي تنشئه لاقتران العميل. إنشاء GUID فريد لكل جهاز يستدعي خدمة الويب (تنشئ البرامج النصية المضمنة في هذه الصفحة GUID لك). لا تستخدم GUIDs الموضحة في الأمثلة التالية لأنه قد يتم حظرها بواسطة خدمة الويب في المستقبل. تنسيق GUID هو xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx، حيث يمثل x رقما سداسيا عشريا.

    لإنشاء GUID، يمكنك استخدام الأمر New-Guid PowerShell، أو استخدام خدمة عبر الإنترنت مثل منشئ GUID عبر الإنترنت.

أسلوب ويب الإصدار

تقوم Microsoft بتحديث عنوان IP ل Microsoft 365 وإدخالات FQDN في بداية كل شهر. يتم أحيانا نشر التحديثات خارج النطاق بسبب حوادث الدعم أو تحديثات الأمان أو المتطلبات التشغيلية الأخرى.

يتم تعيين رقم إصدار لبيانات كل مثيل منشور، وتمكنك طريقة ويب الإصدار من التحقق من أحدث إصدار من كل مثيل خدمة Microsoft 365. نوصي بالتحقق من الإصدار ليس أكثر من مرة واحدة في الساعة.

معلمات أسلوب ويب الإصدار هي:

  • AllVersions=<true | false> —بشكل افتراضي، الإصدار الذي تم إرجاعه هو الأحدث. قم بتضمين هذه المعلمة الاختيارية لطلب جميع الإصدارات المنشورة منذ إصدار خدمة الويب لأول مرة.
  • تنسيق=<JSON | CSV | RSS> — بالإضافة إلى تنسيقات JSON وCSV، تدعم طريقة ويب الإصدار أيضا RSS. يمكنك استخدام هذه المعلمة الاختيارية مع المعلمة AllVersions=true لطلب موجز RSS يمكن استخدامه مع Outlook أو برامج قراءة RSS الأخرى.
  • المثيل=<في جميع أنحاء العالم | الصين | USGovDoD | USGovGCCHigh> —تحدد هذه المعلمة الاختيارية المثيل الذي يجب إرجاع الإصدار له. إذا تم حذفها، يتم إرجاع جميع المثيلات. المثيلات الصالحة هي: في جميع أنحاء العالم، والصين، و USGovDoD، و USGovGCCHigh.

أسلوب ويب الإصدار غير محدود المعدل ولا يرجع أبدا 429 رمز استجابة HTTP. تتضمن الاستجابة لأسلوب ويب الإصدار عنوان التحكم في ذاكرة التخزين المؤقت الذي يوصي بالتخزين المؤقت للبيانات لمدة ساعة واحدة. يمكن أن تكون النتيجة من أسلوب ويب الإصدار سجلا واحدا أو صفيفا من السجلات. عناصر كل سجل هي:

  • instance — الاسم المختصر لمثيل خدمة Microsoft 365.
  • الأحدث — أحدث إصدار لنقاط النهاية للمثيل المحدد.
  • الإصدارات — قائمة بجميع الإصدارات السابقة للمثيل المحدد. يتم تضمين هذا العنصر فقط إذا كانت المعلمة AllVersions صحيحة.

أمثلة على أسلوب ويب للإصدار

مثال 1 طلب URI: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يقوم URI هذا بإرجاع أحدث إصدار من كل مثيل خدمة Microsoft 365. مثال على النتيجة:

[
 {
  "instance": "Worldwide",
  "latest": "2018063000"
 },
 {
  "instance": "USGovDoD",
  "latest": "2018063000"
 },
 {
  "instance": "USGovGCCHigh",
  "latest": "2018063000"
 },
 {
  "instance": "China",
  "latest": "2018063000"
 }
]

هام

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

مثال 2 طلب URI: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يقوم URI هذا بإرجاع أحدث إصدار من مثيل خدمة Microsoft 365 المحدد. مثال على النتيجة:

{
 "instance": "Worldwide",
 "latest": "2018063000"
}

مثال 3 طلب URI: https://endpoints.office.com/version/Worldwide?Format=CSV&؛ ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يعرض URI هذا الإخراج بتنسيق CSV. مثال على النتيجة:

instance,latest
Worldwide,2018063000

مثال 4 طلب URI: https://endpoints.office.com/version/Worldwide?AllVersions=true&؛ ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يعرض عنوان URI هذا جميع الإصدارات السابقة التي تم نشرها لمثيل خدمة Microsoft 365 في جميع أنحاء العالم. مثال على النتيجة:

{
  "instance": "Worldwide",
  "latest": "2018063000",
  "versions": [
    "2018063000",
    "2018062000"
  ]
}

مثال 5 RSS Feed URI: https://endpoints.office.com/version/worldwide?clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7& allVersions=true&format=RSS

يعرض URI هذا موجز RSS للإصدارات المنشورة التي تتضمن ارتباطات إلى قائمة التغييرات لكل إصدار. مثال على النتيجة:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:a10="https://www.w3.org/2005/Atom">
<channel>
<link>https://aka.ms/o365ip</link>
<description/>
<language>en-us</language>
<lastBuildDate>Thu, 02 Aug 2018 00:00:00 Z</lastBuildDate>
<item>
<guid isPermaLink="false">2018080200</guid>
<link>https://endpoints.office.com/changes/Worldwide/2018080200?singleVersion&clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7</link> <description>Version 2018080200 includes 2 changes. IPs: 2 added and 0 removed.</description>
<pubDate>Thu, 02 Aug 2018 00:00:00 Z</pubDate>
</item>

أسلوب الويب لنقاط النهاية

تقوم طريقة الويب لنقاط النهاية بإرجاع جميع السجلات لنطاقات عناوين IP وعناوين URL التي تشكل خدمة Microsoft 365. يجب دائما استخدام أحدث البيانات من أسلوب الويب لنقاط النهاية لتكوين جهاز الشبكة. توفر Microsoft إشعارا مسبقا قبل 30 يوما من نشر إضافات جديدة لمنحك الوقت لتحديث قوائم التحكم في الوصول وقوائم تجاوز الخادم الوكيل. نوصي باستدعاء أسلوب ويب نقاط النهاية مرة أخرى فقط عندما يشير أسلوب ويب الإصدار إلى توفر إصدار جديد من البيانات.

معلمات أسلوب الويب لنقاط النهاية هي:

  • ServiceAreas=<شائع | Exchange | SharePoint | Skype> —قائمة مفصولة بفواصل لمناطق الخدمة. العناصر الصالحة هي CommonوExchangeوSharePointوSkype. نظرا لأن عناصر منطقة الخدمة الشائعة هي شرط أساسي لجميع مناطق الخدمة الأخرى، فإن خدمة الويب تتضمنها دائما. إذا لم تقم بتضمين هذه المعلمة، يتم إرجاع جميع مناطق الخدمة.
  • TenantName=<tenant_name> —اسم مستأجر Microsoft 365. تأخذ خدمة الويب الاسم المقدم وتدرجه في أجزاء من عناوين URL التي تتضمن اسم المستأجر. إذا لم تقدم اسم مستأجر، فإن هذه الأجزاء من عناوين URL لها حرف البدل (*).
  • NoIPv6=<true | false> —قم بتعيين القيمة إلى true لاستبعاد عناوين IPv6 من الإخراج إذا كنت لا تستخدم IPv6 في شبكتك.
  • المثيل=<في جميع أنحاء العالم | الصين | USGovDoD | USGovGCCHigh> —تحدد هذه المعلمة المطلوبة المثيل الذي سيتم إرجاع نقاط النهاية منه. المثيلات الصالحة هي: في جميع أنحاء العالموالصين وUSGovDoD و USGovGCCHigh.

إذا قمت باستدعاء أسلوب ويب نقاط النهاية عدة مرات من نفس عنوان IP للعميل، فقد تتلقى رمز استجابة HTTP 429 (طلبات كثيرة جدا). إذا حصلت على رمز الاستجابة هذا، فانتظر ساعة واحدة قبل تكرار طلبك، أو قم بإنشاء GUID جديد للطلب. كأفضل ممارسة عامة، قم باستدعاء أسلوب الويب لنقاط النهاية فقط عندما يشير أسلوب ويب الإصدار إلى توفر إصدار جديد.

النتيجة من أسلوب ويب نقاط النهاية هي صفيف من السجلات التي يمثل فيها كل سجل مجموعة نقاط نهاية معينة. العناصر الخاصة بكل سجل هي:

  • id — رقم المعرف غير القابل للتغيير لمجموعة نقاط النهاية.
  • serviceArea — منطقة الخدمة التي تعد جزءا منها: شائع أو Exchange أو SharePoint أو Skype.
  • urls — عناوين URL لمجموعة نقاط النهاية. صفيف JSON من سجلات DNS. تم حذفه إذا كان فارغا.
  • tcpPorts — منافذ TCP لمجموعة نقاط النهاية. يتم تنسيق كافة عناصر المنافذ كقائمة مفصولة بفواصل من المنافذ أو نطاقات المنافذ مفصولة بحرف شرطة (-). تنطبق المنافذ على جميع عناوين IP وجميع عناوين URL في نقطة النهاية المعينة لفئة معينة. تم حذفه إذا كان فارغا.
  • udpPorts — منافذ UDP لنطاقات عناوين IP في مجموعة نقاط النهاية هذه. تم حذفه إذا كان فارغا.
  • ips —نطاقات عناوين IP المقترنة بمجموعة نقاط النهاية هذه كما هي مقترنة بمنافذ TCP أو UDP المدرجة. صفيف JSON من نطاقات عناوين IP. تم حذفه إذا كان فارغا.
  • الفئة — فئة الاتصال لمجموعة نقاط النهاية. القيم الصالحة هي Optimizeو Allow و Default. إذا قمت بالبحث في إخراج أسلوب الويب لنقاط النهاية لفئة عنوان IP أو عنوان URL معين، فمن المحتمل أن يرجع الاستعلام فئات متعددة. في مثل هذه الحالة، اتبع التوصية للفئة ذات الأولوية القصوى. على سبيل المثال، إذا ظهرت نقطة النهاية في كل من التحسينوالسماح، يجب اتباع متطلبات التحسين. مطلوب.
  • expressRoute — True إذا تم توجيه مجموعة نقاط النهاية هذه عبر ExpressRoute، False إن لم يكن.
  • مطلوب — صحيح إذا كانت مجموعة نقاط النهاية هذه مطلوبة للحصول على اتصال ل Microsoft 365 ليتم دعمه. خطأ إذا كانت مجموعة نقاط النهاية هذه اختيارية.
  • الملاحظات — بالنسبة لنقاط النهاية الاختيارية، يصف هذا النص وظائف Microsoft 365 التي لن تكون متوفرة إذا تعذر الوصول إلى عناوين IP أو عناوين URL في مجموعة نقاط النهاية هذه في طبقة الشبكة. تم حذفه إذا كان فارغا.

أمثلة على أسلوب الويب لنقاط النهاية

مثال 1 طلب URI: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يحصل URI هذا على جميع نقاط النهاية لمثيل Microsoft 365 في جميع أنحاء العالم لجميع أحمال العمل. مثال على النتيجة التي تعرض مقتطفا من الإخراج:

[
 {
  "id": 1,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.protection.outlook.com"
   ],
  "ips":
   [
    "2a01:111:f403::/48", "23.103.132.0/22", "23.103.136.0/21", "23.103.198.0/23", "23.103.212.0/22", "40.92.0.0/14", "40.107.0.0/17", "40.107.128.0/18", "52.100.0.0/14", "213.199.154.0/24", "213.199.180.128/26", "94.245.120.64/26", "207.46.163.0/24", "65.55.88.0/24", "216.32.180.0/23", "23.103.144.0/20", "65.55.169.0/24", "207.46.100.0/24", "2a01:111:f400:7c00::/54", "157.56.110.0/23", "23.103.200.0/22", "104.47.0.0/17", "2a01:111:f400:fc00::/54", "157.55.234.0/24", "157.56.112.0/24", "52.238.78.88/32"
   ],
  "tcpPorts": "443",
  "expressRoute": true,
  "category": "Allow"
 },
 {
  "id": 2,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.mail.protection.outlook.com"
   ],

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

مثال 2 طلب URI: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&؛ ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يحصل هذا المثال على نقاط نهاية لمثيل Microsoft 365 Worldwide Exchange Online والتبعيات فقط.

الإخراج، على سبيل المثال، 2 مشابه للمثال 1 باستثناء أن النتائج لن تتضمن نقاط نهاية ل SharePoint أو Skype for Business Online.

تغيير أسلوب الويب

ترجع طريقة ويب التغييرات آخر التحديثات التي تم نشرها، عادة ما تكون تغييرات الشهر السابق على نطاقات عناوين IP وعناوين URL.

التغييرات الأكثر أهمية لبيانات نقاط النهاية هي عناوين URL وعناوين IP الجديدة. قد يؤدي الفشل في إضافة عنوان IP إلى قائمة التحكم في الوصول إلى جدار الحماية أو عنوان URL إلى قائمة تجاوز الخادم الوكيل إلى انقطاع مستخدمي Microsoft 365 خلف جهاز الشبكة هذا. على الرغم من المتطلبات التشغيلية، يتم نشر نقاط النهاية الجديدة إلى خدمة الويب قبل 30 يوما من تاريخ توفير نقاط النهاية للاستخدام لمنحك الوقت لتحديث قوائم التحكم في الوصول وقوائم تجاوز الخادم الوكيل.

المعلمة المطلوبة لأسلوب ويب التغييرات هي:

  • الإصدار=<YYYYMMDDNN> —معلمة مسار URL المطلوبة. هذه القيمة هي الإصدار الذي قمت بتنفيذه حاليا. ستقوم خدمة الويب بإعادة التغييرات منذ ذلك الإصدار. التنسيق هو YYYYMMDDNN، حيث NN هو عدد طبيعي يتم زيادته إذا كانت هناك إصدارات متعددة مطلوبة للنشر في يوم واحد، مع 00 تمثل التحديث الأول ليوم معين. تتطلب خدمة الويب أن تحتوي معلمة الإصدار على 10 أرقام بالضبط.

أسلوب ويب التغييرات محدود بنفس طريقة الويب لنقاط النهاية. إذا تلقيت رمز استجابة HTTP 429، فانتظر ساعة واحدة قبل تكرار طلبك أو قم بإنشاء GUID جديد للطلب.

النتيجة من أسلوب ويب التغييرات هي صفيف من السجلات التي يمثل فيها كل سجل تغييرا في إصدار معين من نقاط النهاية. العناصر الخاصة بكل سجل هي:

  • id — المعرف غير القابل للتغيير لسجل التغيير.
  • endpointSetId — معرف سجل مجموعة نقاط النهاية الذي تم تغييره.
  • التصرف — يصف ما فعله التغيير في سجل مجموعة نقاط النهاية. القيم هي تغيير أو إضافة أو إزالة.
  • impact — لن تكون جميع التغييرات بنفس القدر من الأهمية لكل بيئة. يصف هذا العنصر التأثير المتوقع على بيئة محيط شبكة المؤسسة نتيجة لهذا التغيير. يتم تضمين هذا العنصر فقط في سجلات التغيير للإصدار 2018112800 والإصدارات الأحدث. خيارات التأثير هي: — AddedIp – تمت إضافة عنوان IP إلى Microsoft 365 وسيتم تشغيله على الخدمة قريبا. يمثل هذا تغييرا تحتاج إلى القيام به على جدار حماية أو جهاز محيط شبكة طبقة 3 آخر. إذا لم تقم بإضافة هذا قبل أن نبدأ استخدامه، فقد تواجه انقطاعا. — addedUrl – تمت إضافة عنوان URL إلى Microsoft 365 وسيتم تشغيله مباشرة على الخدمة قريبا. يمثل هذا تغييرا تحتاج إلى القيام به على خادم وكيل أو عنوان URL لتحليل الجهاز المحيط بالشبكة. إذا لم تقم بإضافة عنوان URL هذا قبل البدء في استخدامه، فقد تواجه انقطاعا. — تمت إضافةIpAndUrl — تمت إضافة كل من عنوان IP وعنوان URL. يمثل هذا تغييرا تحتاج إلى القيام به إما على جهاز طبقة جدار الحماية 3 أو خادم وكيل أو جهاز تحليل عنوان URL. إذا لم تقم بإضافة زوج IP/URL هذا قبل أن نبدأ استخدامه، فقد تواجه انقطاعا. — RemovedIpOrUrl – تمت إزالة عنوان IP واحد على الأقل أو عنوان URL واحد على الأقل من Microsoft 365. قم بإزالة نقاط نهاية الشبكة من الأجهزة المحيطة، ولكن لا يوجد موعد نهائي للقيام بذلك. — ChangedIsExpressRoute – تم تغيير سمة دعم ExpressRoute. إذا كنت تستخدم ExpressRoute، فقد تحتاج إلى اتخاذ إجراء اعتمادا على التكوين الخاص بك. — MovedIpOrUrl – نقلنا عنوان IP أو عنوان URL بين مجموعة نقاط النهاية هذه وآخر. بشكل عام لا يلزم اتخاذ أي إجراء. — RemovedDuplicateIpOrUrl – قمنا بإزالة عنوان IP أو عنوان URL مكرر ولكن لا يزال منشورا ل Microsoft 365. بشكل عام لا يلزم اتخاذ أي إجراء. — OtherNonPriorityChanges – قمنا بتغيير شيء أقل أهمية من جميع الخيارات الأخرى، مثل محتويات حقل الملاحظة.
  • version — إصدار مجموعة نقاط النهاية المنشورة التي تم إدخال التغيير فيها. أرقام الإصدارات بتنسيق YYYYMMDDNN، حيث NN هو عدد طبيعي يتم زيادته إذا كانت هناك إصدارات متعددة مطلوبة للنشر في يوم واحد.
  • السابق — بنية فرعية تفصل القيم السابقة للعناصر التي تم تغييرها في مجموعة نقاط النهاية. لن يتم تضمين هذا لمجموعات نقاط النهاية المضافة حديثا. يتضمن ExpressRouteوserviceAreaوالفئةوالمطلوبوtcpPortsوuddpPortsوالملاحظات.
  • current — بنية فرعية تفصل القيم المحدثة لعناصر التغييرات على مجموعة نقاط النهاية. يتضمن ExpressRouteوserviceAreaوالفئةوالمطلوبوtcpPortsوuddpPortsوالملاحظات.
  • إضافة —بنية فرعية توضح تفاصيل العناصر المراد إضافتها إلى مجموعات مجموعة نقاط النهاية. يتم حذفه إذا لم تكن هناك إضافات. — effectiveDate—يحدد البيانات عندما تكون الإضافات مباشرة في الخدمة. — ips — العناصر التي ستتم إضافتها إلى صفيف ips . — urls- العناصر التي ستتم إضافتها إلى صفيف عناوين URL .
  • إزالة — بنية فرعية تفصل العناصر المراد إزالتها من مجموعة نقاط النهاية. يتم حذفه إذا لم تكن هناك عمليات إزالة. — ips —العناصر المراد إزالتها من صفيف ips . — urls- العناصر المراد إزالتها من صفيف عناوين URL .

تغيير أمثلة أسلوب الويب

مثال 1 طلب URI: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يتطلب هذا جميع التغييرات السابقة على مثيل خدمة Microsoft 365 في جميع أنحاء العالم. مثال على النتيجة:

[
 {
  "id": 424,
  "endpointSetId": 32,
  "disposition": "Change",
  "version": "2018062700",
  "remove":
   {
    "urls":
     [
      "*.api.skype.com", "skypegraph.skype.com"
     ]
   }
 },
 {
  "id": 426,
  "endpointSetId": 31,
  "disposition": "Change",
  "version": "2018062700",
  "add":
   {
    "effectiveDate": "20180609",
    "ips":
     [
      "51.140.203.190/32"
     ]
   },
  "remove":
   {
    "ips":
     [

مثال 2 طلب URI: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

يتطلب هذا التغييرات منذ الإصدار المحدد إلى مثيل Microsoft 365 Worldwide. في هذه الحالة، الإصدار المحدد هو الأحدث. مثال على النتيجة:

[
  {
    "id":3,
    "endpointSetId":33,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["65.55.127.0/24","66.119.157.192/26","66.119.158.0/25",
      "111.221.76.128/25","111.221.77.0/26","207.46.5.0/24"]
    }
  },
  {
    "id":4,
    "endpointSetId":45,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["13.78.93.8/32","40.113.87.220/32","40.114.149.220/32",
      "40.117.100.83/32","40.118.214.164/32","104.208.31.113/32"]
    }
  }
]

مثال على برنامج PowerShell النصي

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

يقوم البرنامج النصي بالآتي:

  • يتحقق من رقم إصدار نقاط نهاية مثيل Microsoft 365 Worldwide الحالية عن طريق استدعاء واجهة برمجة تطبيقات REST لخدمة الويب.

  • يتحقق من وجود ملف إصدار حالي عند $Env:TEMP\O365_endpoints_latestversion.txt. عادة ما يكون مسار المتغير العمومي $Env:TEMP هو C:\Users\<username>\AppData\Local\Temp.

  • إذا كانت هذه هي المرة الأولى التي يتم فيها تشغيل البرنامج النصي، يقوم البرنامج النصي بإرجاع الإصدار الحالي وجميع عناوين IP الحالية وعناوين URL، ويكتب إصدار نقاط النهاية إلى الملف $Env:TEMP\O365_endpoints_latestversion.txt وإخراج بيانات نقاط النهاية إلى الملف $Env:TEMP\O365_endpoints_data.txt. يمكنك تعديل مسار و/أو اسم ملف الإخراج عن طريق تحرير هذه الأسطر:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • في كل تنفيذ لاحق للبرنامج النصي، إذا كان أحدث إصدار من خدمة الويب مطابقا للإصدار في ملف O365_endpoints_latestversion.txt ، يتم إنهاء البرنامج النصي دون إجراء أي تغييرات.

  • عندما يكون أحدث إصدار لخدمة الويب أحدث من الإصدار الموجود في ملف O365_endpoints_latestversion.txt ، يقوم البرنامج النصي بإرجاع نقاط النهاية وعوامل التصفية لنقاط نهاية الفئة السماحوالتحسين ، وتحديث الإصدار في ملف O365_endpoints_latestversion.txt ، وكتابة البيانات المحدثة إلى ملف O365_endpoints_data.txt .

ينشئ البرنامج النصي ClientRequestId فريدا للكمبيوتر الذي يتم تنفيذه عليه، ويعيد استخدام هذا المعرف عبر استدعاءات متعددة. يتم تخزين هذا المعرف في ملف O365_endpoints_latestversion.txt .

لتشغيل البرنامج النصي PowerShell

  1. انسخ البرنامج النصي واحفظه في محرك الأقراص الثابتة المحلي أو موقع البرنامج النصي ك Get-O365WebServiceUpdates.ps1.

  2. نفذ البرنامج النصي في محرر البرنامج النصي المفضل لديك مثل PowerShell ISE أو VS Code، أو من وحدة تحكم PowerShell باستخدام الأمر التالي:

    powershell.exe -file <path>\Get-O365WebServiceUpdates.ps1
    

    لا توجد معلمات لتمريرها إلى البرنامج النصي.

<# Get-O365WebServiceUpdates.ps1
From https://aka.ms/ipurlws
v1.1 8/6/2019

DESCRIPTION
This script calls the REST API of the Microsoft 365 IP and URL Web Service (Worldwide instance)
and checks to see if there has been a new update since the version stored in an existing
$Env:TEMP\O365_endpoints_latestversion.txt file in your user directory's temp folder
(usually C:\Users\<username>\AppData\Local\Temp).
If the file doesn't exist, or the latest version is newer than the current version in the
file, the script returns IPs and/or URLs that have been changed, added or removed in the latest
update and writes the new version and data to the output file $Env:TEMP\O365_endpoints_data.txt.

USAGE
Run as a scheduled task every 60 minutes.

PARAMETERS
n/a

PREREQUISITES
PS script execution policy: Bypass
PowerShell 3.0 or later
Does not require elevation
#>

#Requires -Version 3.0

# web service root URL
$ws = "https://endpoints.office.com"
# path where output files will be stored
$versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
$datapath = $Env:TEMP + "\O365_endpoints_data.txt"

# fetch client ID and version if version file exists; otherwise create new file and client ID
if (Test-Path $versionpath) {
    $content = Get-Content $versionpath
    $clientRequestId = $content[0]
    $lastVersion = $content[1]
    Write-Output ("Version file exists! Current version: " + $lastVersion)
}
else {
    Write-Output ("First run! Creating version file at " + $versionpath + ".")
    $clientRequestId = [GUID]::NewGuid().Guid
    $lastVersion = "0000000000"
    @($clientRequestId, $lastVersion) | Out-File $versionpath
}

# call version method to check the latest version, and pull new data if version number is different
$version = Invoke-RestMethod -Uri ($ws + "/version/Worldwide?clientRequestId=" + $clientRequestId)
if ($version.latest -gt $lastVersion) {
    Write-Host "New version of Microsoft 365 worldwide commercial service instance endpoints detected"
    # write the new version number to the version file
    @($clientRequestId, $version.latest) | Out-File $versionpath
    # invoke endpoints method to get the new data
    $endpointSets = Invoke-RestMethod -Uri ($ws + "/endpoints/Worldwide?clientRequestId=" + $clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into custom objects with port and category
    # URL results
    $flatUrls = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $urls = $(if ($endpointSet.urls.Count -gt 0) { $endpointSet.urls } else { @() })
        $urlCustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $urlCustomObjects = $urls | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    url      = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $urlCustomObjects
    }
    # IPv4 results
    $flatIp4s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv4 strings contain dots
        $ip4s = $ips | Where-Object { $_ -like '*.*' }
        $ip4CustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $ip4CustomObjects = $ip4s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip4CustomObjects
    }
    # IPv6 results
    $flatIp6s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv6 strings contain colons
        $ip6s = $ips | Where-Object { $_ -like '*:*' }
        $ip6CustomObjects = @()
        if ($endpointSet.category -in ("Optimize")) {
            $ip6CustomObjects = $ip6s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip6CustomObjects
    }

    # write output to screen
    Write-Output ("Client Request ID: " + $clientRequestId)
    Write-Output ("Last Version: " + $lastVersion)
    Write-Output ("New Version: " + $version.latest)
    Write-Output ""
    Write-Output "IPv4 Firewall IP Address Ranges"
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "IPv6 Firewall IP Address Ranges"
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "URLs for Proxy Server"
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-String
    Write-Output ("IP and URL data written to " + $datapath)

    # write output to data file
    Write-Output "Microsoft 365 IP and UL Web Service data" | Out-File $datapath
    Write-Output "Worldwide instance" | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output ("Version: " + $version.latest) | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv4 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv6 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "URLs for Proxy Server" | Out-File $datapath -Append
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-File $datapath -Append
}
else {
    Write-Host "Microsoft 365 worldwide commercial service instance endpoints are up-to-date."
}

مثال على برنامج Python النصي

فيما يلي برنامج نصي Python، تم اختباره باستخدام Python 3.6.3 على Windows 10، يمكنك تشغيله لمعرفة ما إذا كانت هناك إجراءات تحتاج إلى اتخاذها للبيانات المحدثة. يتحقق هذا البرنامج النصي من رقم الإصدار لنقاط نهاية مثيل Microsoft 365 Worldwide. عندما يكون هناك تغيير، فإنه يقوم بتنزيل نقاط النهاية وعوامل التصفية لنقاط نهاية الفئة السماحوالتحسين . كما يستخدم ClientRequestId فريدا عبر مكالمات متعددة ويحفظ أحدث إصدار موجود في ملف مؤقت. اتصل بهذا البرنامج النصي مرة واحدة في الساعة للتحقق من وجود تحديث للإصدار.

import json
import tempfile
from pathlib import Path
import urllib.request
import uuid
# helper to call the webservice and parse the response
def webApiGet(methodName, instanceName, clientRequestId):
    ws = "https://endpoints.office.com"
    requestPath = ws + '/' + methodName + '/' + instanceName + '?clientRequestId=' + clientRequestId
    request = urllib.request.Request(requestPath)
    with urllib.request.urlopen(request) as response:
        return json.loads(response.read().decode())
# path where client ID and latest version number will be stored
datapath = Path(tempfile.gettempdir() + '/endpoints_clientid_latestversion.txt')
# fetch client ID and version if data exists; otherwise create new file
if datapath.exists():
    with open(datapath, 'r') as fin:
        clientRequestId = fin.readline().strip()
        latestVersion = fin.readline().strip()
else:
    clientRequestId = str(uuid.uuid4())
    latestVersion = '0000000000'
    with open(datapath, 'w') as fout:
        fout.write(clientRequestId + '\n' + latestVersion)
# call version method to check the latest version, and pull new data if version number is different
version = webApiGet('version', 'Worldwide', clientRequestId)
if version['latest'] > latestVersion:
    print('New version of Microsoft 365 worldwide commercial service instance endpoints detected')
    # write the new version number to the data file
    with open(datapath, 'w') as fout:
        fout.write(clientRequestId + '\n' + version['latest'])
    # invoke endpoints method to get the new data
    endpointSets = webApiGet('endpoints', 'Worldwide', clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into tuples with port and category
    flatUrls = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            category = endpointSet['category']
            urls = endpointSet['urls'] if 'urls' in endpointSet else []
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatUrls.extend([(category, url, tcpPorts, udpPorts) for url in urls])
    flatIps = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            ips = endpointSet['ips'] if 'ips' in endpointSet else []
            category = endpointSet['category']
            # IPv4 strings have dots while IPv6 strings have colons
            ip4s = [ip for ip in ips if '.' in ip]
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatIps.extend([(category, ip, tcpPorts, udpPorts) for ip in ip4s])
    print('IPv4 Firewall IP Address Ranges')
    print(','.join(sorted(set([ip for (category, ip, tcpPorts, udpPorts) in flatIps]))))
    print('URLs for Proxy Server')
    print(','.join(sorted(set([url for (category, url, tcpPorts, udpPorts) in flatUrls]))))

    # TODO send mail (e.g. with smtplib/email modules) with new endpoints data
else:
    print('Microsoft 365 worldwide commercial service instance endpoints are up-to-date')

تعيين إصدار واجهة خدمة الويب

قد تكون التحديثات إلى المعلمات أو النتائج لأساليب خدمة الويب هذه مطلوبة في المستقبل. بعد نشر إصدار التوفر العام لخدمات الويب هذه، ستبذل Microsoft جهودا معقولة لتوفير إشعار مسبق بتحديثات المواد لخدمة الويب. عندما تعتقد Microsoft أن التحديث سيتطلب تغييرات على العملاء الذين يستخدمون خدمة الويب، ستحتفظ Microsoft بالإصدار السابق (إصدار واحد) من خدمة الويب متوفرا لمدة 12 شهرا على الأقل بعد إصدار الإصدار الجديد. قد لا يتمكن العملاء الذين لم يقوموا بالترقية خلال ذلك الوقت من الوصول إلى خدمة الويب وأساليبها. يجب على العملاء التأكد من أن عملاء خدمة الويب يستمرون في العمل دون خطأ إذا تم إجراء التغييرات التالية على توقيع واجهة خدمة الويب:

  • إضافة معلمة اختيارية جديدة إلى أسلوب ويب موجود لا يجب توفيره من قبل العملاء الأقدم ولا يؤثر على النتيجة التي يتلقاها العميل الأقدم.
  • إضافة سمة مسماة جديدة في أحد عناصر REST للاستجابة أو أعمدة أخرى إلى الاستجابة CSV.
  • إضافة أسلوب ويب جديد باسم جديد لا يتم استدعاؤه من قبل العملاء الأقدم.

تحديث الإعلامات

يمكنك استخدام بعض الطرق المختلفة للحصول على إعلامات البريد الإلكتروني عند نشر التغييرات على عناوين IP وعناوين URL إلى خدمة الويب.

تصدير ملف PAC للوكيل

Get-PacFile هو برنامج نصي PowerShell يقرأ أحدث نقاط نهاية الشبكة من عنوان IP ل Microsoft 365 وخدمة ويب URL وينشئ نموذج ملف PAC. للحصول على معلومات حول استخدام Get-PacFile، راجع استخدام ملف PAC للتوجيه المباشر لنسبة استخدام الشبكة الحيوية ل Microsoft 365.

عناوين URL ونطاقات عناوين IP ل Microsoft 365

إدارة نقاط نهاية Microsoft 365

مبادئ اتصال شبكة Microsoft 365

شبكة Microsoft 365 وضبط الأداء

تقييم اتصال الشبكة Microsoft 365

جودة الوسائط وأداء اتصال الشبكة في Skype for Business Online

تحسين شبكتك ل Skype for Business Online

ضبط أداء Microsoft 365 باستخدام الخطوط الأساسية ومحفوظات الأداء

خطة استكشاف أخطاء الأداء وإصلاحها ل Microsoft 365