Skip to content

Wkład w reguły ​

Ścieżki ​

Wkład dzieli się na dwa rodzaje:

  1. Szybkie zgłoszenie: kliknij przycisk „Rozpoznanie nieprawidłowe — kliknij, aby poprawić" na karcie technologii w oknie podręcznym. Otworzy się GitHub Issue z automatycznie wypełnionym kontekstem (URL strony, wynik dopasowania reguły, wersja rozszerzenia). Opiekun dostosuje regułę po otrzymaniu zgłoszenia.
  2. Bezpośredni PR: sforkuj repozytorium, edytuj odpowiedni plik JSON w public/rules/, sprawdź lokalnie i prześlij PR.

Poniżej opisany jest głównie przepływ bezpośredniego PR.

Znalezienie właściwego pliku ​

public/rules/ jest podzielone na pliki według odpowiedzialności:

PlikZawiera
page/frontend-frameworks.jsonReact / Vue / Angular / frameworki frontendowe
page/ui-frameworks.jsonTailwind / Bootstrap / Element / Antd i inne biblioteki UI
page/build-runtime.jsonWebpack / Vite / Rollup / Bun i inne narzędzia budowania
page/frontend-cdn-libraries.jsonBiblioteki frontendowe z CDN (jQuery, lodash, moment itp.)
page/wordpress-plugins.jsonPonad 4500 wtyczek WordPress
page/drupal-modules.jsonPonad 4000 modułów Drupal
page/cms-themes.jsonMotywy CMS
page/website-programs.jsonWordPress / Drupal / Discuz! i inne programy stron
page/payment-systems.jsonPlatformy płatności
page/third-party-logins.jsonLogowania zewnętrzne
page/saas-services.jsonSaaS (Sentry / Mixpanel / Intercom itp.)
page/analytics-providers.jsonStatystyki i analityka
page/cdn-providers.jsonDostawcy CDN (rozpoznawanie po stronie frontendu)
headers/server-products.jsonProdukty serwerowe rozpoznawane przez nagłówek Server:
headers/cdn-providers.jsonCDN rozpoznawane przez nagłówki odpowiedzi
headers/website-programs.jsonCMS rozpoznawane przez nagłówki odpowiedzi
...

Pełna lista w public/rules/index.json.

Minimalny przykład nowej reguły ​

Chcesz dodać rozpoznawanie ExampleCMS. W page/website-programs.json znajdź odpowiednią grupę (np. „samodzielnie hostowane CMS") i dodaj:

json
{
  "name": "ExampleCMS",
  "url": "https://examplecms.example.com",
  "patterns": ["examplecms-[0-9.]+\\.min\\.js", "/_examplecms/"],
  "globals": ["ExampleCMS"],
  "selectors": ["[data-powered-by='examplecms']"]
}

Znaczenie pól opisane jest w Formacie pliku reguł.

Do której grupy należy reguła? ​

Otwierając odpowiedni plik JSON, zobaczysz zagnieżdżoną strukturę grup:

json
{
  "page": {
    "websitePrograms": {
      "defaults": { "category": "网站程序" },
      "rules": [
        {
          "defaults": { "confidence": "高" },
          "rules": [
            // seria CMS o wysokiej pewności
          ]
        },
        {
          "defaults": { "confidence": "中" },
          "rules": [
            // seria o średniej pewności
          ]
        }
      ]
    }
  }
}

Umieść regułę w podgrupie odpowiadającej twojej ocenie pewności rozpoznania. Kolejność w tablicy rules nie wpływa na wyniki detekcji — ma znaczenie tylko przy przeglądaniu.

Weryfikacja reguły ​

Po wprowadzeniu zmian uruchom:

bash
bun run build

Budowanie uruchomi precompileRulesPlugin, który wstrzyknie do reguł pola __hints itp. Następnie załaduj dist/ na stronie chrome://extensions/ i zweryfikuj na prawdziwej stronie z ExampleCMS.

Możesz też najpierw przetestować regułę w panelu „Reguły niestandardowe" w warstwie konfiguracji użytkownika, a po potwierdzeniu działania przenieść ją do public/rules/.

Ograniczanie fałszywych alarmów ​

  • Preferuj globals: trafienie window.X jest najbardziej stabilne, prawie zerowe ryzyko fałszywego alarmu
  • Preferuj dedykowane selektory: [data-powered-by='examplecms'], [ng-version] — atrybuty jednoznacznie zapisywane przez daną technologię
  • W patterns zasobów używaj pełnych domen / pełnych ścieżek: cdn.examplecms.com/sdk.js jest bardziej pewne niż examplecms
  • classNames / classPrefixes z prefiksem: example-cms- zamiast cms-, żeby uniknąć kolizji z innymi projektami używającymi cms-
  • Zakotwicz wyrażenia regularne: ^/_examplecms/ jest precyzyjniejsze niż /_examplecms/
  • Bądź ostrożny z pewnością: przy wątpliwościach użyj „Średnia" — użytkownik zobaczy żółtą etykietę zamiast zielonej i nie zostanie wprowadzony w błąd

Przepływ zgłaszania PR do głównego repozytorium ​

  1. Sforkuj setube/stackprism
  2. Sklonuj lokalnie, uruchom bun install, potwierdź poprawność budowania przez bun run build
  3. Znajdź odpowiedni plik w public/rules/ i dodaj regułę
  4. Zbierz 2-3 dowody ze Wappalyzer rules, oficjalnej dokumentacji lub strony projektu i umieść je w opisie PR
  5. Prześlij PR do gałęzi main

W opisie PR napisz wyraźnie: jakie technologie zostały dodane, na jakich stronach zostały zweryfikowane i dlaczego te cechy nie będą powodować fałszywych alarmów na innych stronach.

Wydane na licencji MIT