پرش به مطلب اصلی

بلوک فراداده

محتوای داخل ==UserScript== مجوزهای مورد نیاز اسکریپت، اطلاعات مربوط به اسکریپت و غیره را توصیف می‌کند. در ابتدای اسکریپت قرار دارد.

// ==UserScript==
// @name اسکریپت کاربری جدید
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description تلاش برای تسخیر جهان!
// @author شما
// @crontab * * once * *
// ==/UserScript==

مقادیر اصلی

name

نام اسکریپت

namespace

فضای نام اسکریپت. name + namespace منحصر‌به‌فرد بودن اسکریپت را تعیین می‌کند.

version

نسخه اسکریپت. توصیه می‌شود از نسخه‌بندی معنایی پیروی کنید تا هنگام تشخیص تغییر نسخه، از کاربر خواسته شود به‌روزرسانی کند و غیره.

description

شرح مفصل اسکریپت

author

نویسنده اسکریپت

run-at

زمان اجرای اسکریپت

مقداراجراپشتیبانی از
document-startاسکریپت را به محض تطبیق URL در سمت فرانت‌اند به صفحه تزریق می‌کندv0.3.0
document-endاسکریپت را پس از اتمام بارگذاری DOM تزریق می‌کند؛ اسکریپت‌ها و تصاویر صفحه ممکن است در این نقطه هنوز در حال بارگذاری باشندv0.3.0
document-idleاسکریپت را پس از اتمام بارگذاری همه محتوا تزریق می‌کندv0.3.0
document-bodyاسکریپت فقط پس از داشتن عنصر body در صفحه تزریق می‌شودv0.6.2
document-menuبا کلیک راست یک منو نشان می‌دهد؛ اجرای اسکریپت از نام اسکریپت به عنوان نام منو استفاده می‌کندv0.3.4-v0.9.4 (🔥 حذف شده)

برای آیکون‌های منو، می‌توانید به نمادهای یونیکد و ایموجی مراجعه کنید.

run-in

محیطی را که اسکریپت در آن تزریق می‌شود مشخص می‌کند: @run-in normal-tabs برای تب‌های عادی، @run-in incognito-tabs برای تب‌های ناشناس.

early-start (v1.1.0+)

وقتی run-at برابر document-start باشد، اسکریپت در سریع‌ترین زمان ممکن اجرا می‌شود، اما همچنان نمی‌تواند بارگذاری سریع‌تر از صفحه را تضمین کند.

پس از تعریف @run-at document-start، می‌توانید @early-start را اضافه کنید تا اسکریپت سریع‌تر از صفحه بارگذاری شود: مثال

inject-into

نکته

در محیط content-script (contentunsafeWindow فقط به window فعلی خود محیط اشاره می‌کند و نمی‌تواند به window صفحه دسترسی پیدا کند.

ScriptCat از بررسی خودکار محدودیت‌های CSP برای تصمیم‌گیری درباره تزریق به عنوان content یا page پشتیبانی نمی‌کند (یعنی @inject-into auto تامپرمانکی).

مشخص می‌کند اسکریپت کجا تزریق شود، با پشتیبانی از page و content، پیش‌فرض page.

  • page: اسکریپت در محیط صفحه تزریق می‌شود و می‌تواند از unsafeWindow برای دسترسی به window و DOM صفحه استفاده کند
  • content: اسکریپت در محیط content-script تزریق می‌شود، نمی‌تواند مستقیماً به شیء window صفحه دسترسی پیدا کند، اما می‌تواند به DOM صفحه دسترسی پیدا کند و تابع CSP نیست

storageName 🧪

فضای ذخیره‌سازی برای Value؛ داده‌های تحت همان storageName می‌توانند بین اسکریپت‌ها به اشتراک گذاشته و ارتباط برقرار شوند. این مخصوص ScriptCat است.

background

این اسکریپت را به عنوان یک اسکریپت پس‌زمینه علامت‌گذاری می‌کند که باید در محیط پس‌زمینه اجرا شود. برای جزئیات به اسکریپت پس‌زمینه مراجعه کنید.

crontab

اسکریپت را به عنوان یک اسکریپت زمان‌بندی‌شده علامت‌گذاری می‌کند که به یک مقدار عبارت cron نیاز دارد. فقط یک عبارت cron می‌تواند وجود داشته باشد و بر اساس آن برنامه در محیط پس‌زمینه اجرا می‌شود. برای جزئیات به اسکریپت زمان‌بندی‌شده مراجعه کنید.

match

فقط URLهایی که توسط match تطبیق داده شوند اسکریپت را اجرا می‌کنند، طبق الگوهای تطبیق. در match، * یک علامت عام است، tld با دامنه سطح بالا تطبیق می‌یابد و دامنه‌ای که با *. شروع می‌شود نیز با xxx.com تطبیق می‌یابد:

مقدارمثال‌های صحیحمثال‌های نادرست
http://scriptcat.org/doc/matchhttp://scriptcat.org/doc/matchhttp://scriptcat.org/doc/runAt
*://*/param?*https://scriptcat.org/param | http://scriptcat.org/param?search=tampermonkeyhttps://scriptcat.org/test/param
*://*/prefix*suffixhttp://scriptcat.org/prefix/suffix | http://scriptcat.org/prefix/mid/suffix | http://scriptcat.org/prefixsuffixhttp://scriptcat.org/prefix/suffix/end
http*://scriptcat.org/*https://scriptcat.org/ | https://scriptcat.org/doc | http://scriptcat.org/doc/match | http://scriptcat.org/param?search=tampermonkeyhttps://doc.scriptcat.org/
http*://scriptcat.org/doc/*https://scriptcat.org/doc | http://scriptcat.org/doc/matchhttp://scriptcat.org/param?search=tampermonkey
http*://scriptcat.tld/doc/*https://scriptcat.cn/doc | http://scriptcat.net.cn/doc/matchhttp://google.com/param?search=tampermonkey
http*://*.scriptcat.org/doc/*https://scriptcat.cn/doc | http://www.scriptcat.net.cn/doc/matchhttp://google.com/param?search=tampermonkey

include

از \* برای تطبیق فازی پشتیبانی می‌کند و امکان URLهای غیراستاندارد را فراهم می‌کند

exclude

URLهایی که نباید تطبیق داده شوند؛ از همان نحو عبارت include استفاده می‌کند

grant

مجوز API را درخواست می‌کند — یک API فقط پس از درخواست قابل فراخوانی است. فهرست مجوزها را در: مستندات API و مستندات CAT API ببینید.

دو مقدار ویژه:

  • none: اسکریپت در محیط sandbox اجرا نمی‌شود، بلکه مستقیماً در محیط صفحه اجرا می‌شود. در این محیط هیچ API از GM در دسترس نیست، اما می‌توان مستقیماً به شیء window صفحه دسترسی پیدا کرد.
  • unsafeWindow: در محیط sandbox، اگر نیاز به دسترسی به شیء window صفحه دارید، از unsafeWindow برای این کار استفاده کنید. (تامپرمانکی نیازی به اعلام این ندارد — فقط برای سازگاری نگه داشته شده است، که به اعتراف چندان تمیز نیست.)

connect

مجوز دسترسی برای یک سایت را درخواست می‌کند؛ به GM_cookie و GM_xmlhttpRequest مراجعه کنید. GM_download در حالت native نیز @connect را رعایت می‌کند (میزبان‌های اعلام‌نشده یک درخواست تأیید را فعال می‌کنند، برخلاف تامپرمانکی)

resource

یک فایل منبع را شامل می‌شود. پس از اعلام @resource، می‌توانید از GM_getResourceText/GM_getResourceURL برای بازیابی اطلاعات استفاده کنید.

// @resource icon https://bbs.tampermonkey.net.cn/favicon.ico
// @resource html https://bbs.tampermonkey.net.cn/
// @resource xml https://bbs.tampermonkey.net.cn/sitemap.xml
// افزودن تأیید یکپارچگی منبع
// @resource icon https://bbs.tampermonkey.net.cn/favicon.ico#md5-xxx,sha256-xxx

require

یک فایل JS خارجی را شامل می‌شود؛ از تأیید یکپارچگی منبع پشتیبانی می‌کند

require-css

یک فایل CSS خارجی را شامل می‌شود؛ از تأیید یکپارچگی منبع پشتیبانی می‌کند

noframes

اسکریپت را به عنوان اجرا نشدن در داخل یک <frame> علامت‌گذاری می‌کند

definition

آدرس مرجع یک فایل .d.ts است که راهنمای تکمیل خودکار ویرایشگر را فعال می‌کند

antifeature

این مربوط به بازار اسکریپت است؛ ویژگی‌های ناخواسته باید با این مقدار توصیفی علامت‌گذاری شوند، به عنوان مثال:

// @antifeature ads این اسکریپت تبلیغات دارد
// @antifeature referral-link این اسکریپت لینک ارجاع نویسنده را تغییر می‌دهد یا به آن هدایت می‌کند

مقادیر توصیفی اضافی

license

مجوز متن‌باز اسکریپت فعلی

updateURL

بررسی به‌روزرسانی مستلزم داشتن برچسب @version در اسکریپت راه دور برای اعمال این امر است.

لینکی که اسکریپت برای بررسی به‌روزرسانی‌ها استفاده می‌کند؛ اگر تنظیم نشده باشد، به طور پیش‌فرض user.js => meta.js لینک است، یا لینک فعلی اگر user.js وجود ندارد.

اگر @updateURL پیکربندی شده باشد، @downloadURL نیز باید برای اعمال @updateURL پیکربندی شود.

downloadURL

آدرس دانلود برای به‌روزرسانی اسکریپت

supportURL

سایت پشتیبانی، صفحه گزارش باگ

homepage, homepageURL, website

صفحه اصلی اسکریپت

source

صفحه کد منبع اسکریپت

icon, iconURL, defaulticon

آیکون اسکریپت

icon64, icon64URL

آیکون اسکریپت با اندازه 64x64

اطلاعات کپی‌رایت اسکریپت

tag

برچسب‌های اسکریپت، با کاما یا فاصله جدا می‌شوند

compatible

اطلاعات سازگاری نمایش‌داده‌شده در GreasyFork

scriptUrl

URL اسکریپت کاربری که توسط یک اسکریپت اشتراک به آن ارجاع می‌شود

unwrap

به اسکریپت کاربری اجازه می‌دهد از بسته‌بندی sandbox عبور کند و مستقیماً در محدوده سراسری بومی صفحه تزریق و اجرا شود. اسکریپت می‌تواند مستقیماً به متغیرهای سراسری واقعی صفحه دسترسی پیدا کند و آن‌ها را تغییر دهد، اما نمی‌تواند از APIهای ممتاز اسکریپت کاربری مانند GM.* استفاده کند. معمولاً در سناریوهایی استفاده می‌شود که نیاز به تعامل عمیق با اسکریپت‌های بومی صفحه دارند، یا هنگام مهاجرت یک اسکریپت صفحه معمولی موجود.

cloudCat

اسکریپت را به عنوان قابل صادرات به بسته اسکریپت ابری CloudCat علامت‌گذاری می‌کند (فقط SC)

cloudServer

سرویس ابری CloudCat که توسط اسکریپت استفاده می‌شود

exportValue

مقادیر ذخیره‌سازی اسکریپت برای صادرات هنگام صادرات به عنوان اسکریپت ابری

exportCookie

کوکی‌هایی که هنگام صادرات به عنوان اسکریپت ابری باید صادر شوند

یادداشت‌ها

تأیید یکپارچگی منبع

  • از md5، sha1، sha256، sha384 یا sha512 برای تأیید منابع در برابر دستکاری استفاده کنید. روش‌های تأیید متعدد را می‌توان با ; یا , جدا کرد.
  • طبق توصیه‌های W3C، md5 و sha1 توصیه نمی‌شوند؛ به جای آن از sha384 یا یک الگوریتم هش قوی‌تر استفاده کنید.

به عنوان مثال:

// @require https://cdn.jsdelivr.net/npm/[email protected]/lib/darkmode-js.min.js#md5-d55836f30c097da753179f82fa6f108f,sha256-a476ab8560837a51938aa6e1720c8be87c2862b6221690e9de7ffac113811a90