third-party-detector

Third-Party Detector Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "third-party-detector" with this command: npx skills add transilienceai/communitytools/transilienceai-communitytools-third-party-detector

Third-Party Detector Skill

Purpose

Identify third-party services integrated into the target's technology stack including payments, analytics, authentication, CRM, support, and other SaaS tools.

Input

Raw signals from Phase 2:

  • javascript_signals

  • Third-party script URLs, analytics globals

  • html_signals

  • Widget embeds, script tags

  • dns_signals

  • Service verification TXT records

  • http_signals

  • CSP allowed domains

  • job_signals

  • Tool mentions

Service Categories

Payment Processing

Service Detection Signals Weight

Stripe js.stripe.com, Stripe.js, api.stripe.com in CSP 40

PayPal paypal.com scripts, PayPal buttons 35

Square squareup.com, Square SDK 35

Braintree braintreegateway.com 35

Adyen adyen.com scripts 35

Klarna klarna.com scripts 30

Affirm affirm.com scripts 30

Plaid plaid.com scripts (banking) 35

Analytics & Tracking

Service Detection Signals Weight

Google Analytics google-analytics.com, gtag, ga() 40

Google Tag Manager googletagmanager.com, dataLayer 40

Segment cdn.segment.com, analytics.js 40

Mixpanel cdn.mxpnl.com, mixpanel global 40

Amplitude cdn.amplitude.com 40

Heap heap-analytics.com 35

Hotjar static.hotjar.com, hj global 35

FullStory fullstory.com, FS global 35

Pendo pendo.io scripts 35

Posthog posthog.com, ph global 35

Customer Support

Service Detection Signals Weight

Intercom intercom.io, Intercom widget 40

Zendesk zendesk.com, zd-chat 40

Freshdesk freshdesk.com scripts 35

Drift drift.com, Drift widget 35

HubSpot Chat hubspot.com, hs-scripts 35

Crisp crisp.chat 30

Tawk.to tawk.to scripts 30

LiveChat livechat.com 30

Authentication & Identity

Service Detection Signals Weight

Auth0 auth0.com, Auth0 SDK 40

Okta okta.com scripts 40

Firebase Auth firebase.google.com/auth 40

Clerk clerk.dev scripts 35

AWS Cognito cognito-idp patterns 35

Azure AD login.microsoftonline.com 35

CRM & Marketing

Service Detection Signals Weight

Salesforce salesforce.com patterns 40

HubSpot hubspot.com, hs-scripts 40

Marketo marketo.com, munchkin 35

Mailchimp mailchimp.com scripts 35

SendGrid sendgrid.net TXT records 35

Intercom intercom.io (CRM features) 35

Pipedrive pipedrive.com 30

Pardot pardot.com 35

Error & Performance Monitoring

Service Detection Signals Weight

Sentry sentry.io, Sentry SDK 40

Datadog RUM datadoghq.com RUM 40

New Relic newrelic.com, NREUM 35

Bugsnag bugsnag.com 35

LogRocket logrocket.com 35

Rollbar rollbar.com 35

A/B Testing & Experimentation

Service Detection Signals Weight

Optimizely optimizely.com 40

LaunchDarkly launchdarkly.com 40

VWO vwo.com scripts 35

Google Optimize optimize.google.com 35

Split.io split.io 35

Statsig statsig.com 35

CDN & Media

Service Detection Signals Weight

Cloudinary cloudinary.com 35

imgix imgix.net 35

Vimeo vimeo.com, player.vimeo.com 30

YouTube youtube.com embeds 30

Wistia wistia.com 30

Social & Communication

Service Detection Signals Weight

Slack slack.com integrations 30

Discord discord.com widgets 30

Twitter/X twitter.com widgets, platform.twitter.com 30

Facebook facebook.com SDK, connect.facebook.net 35

LinkedIn linkedin.com tracking 30

Detection Logic

def detect_third_party_services(signals): results = []

# JavaScript/Script Tag Detection
for script_url in signals.javascript_signals.script_urls:
    for service in THIRD_PARTY_SERVICES:
        for pattern in service.script_patterns:
            if pattern in script_url:
                add_service(results, service.name, service.category, {
                    "type": "script_url",
                    "value": script_url,
                    "weight": service.weight
                })

# JavaScript Global Detection
for global_var in signals.javascript_signals.globals:
    for service in THIRD_PARTY_SERVICES:
        if service.global_var and service.global_var in global_var:
            add_service(results, service.name, service.category, {
                "type": "js_global",
                "value": global_var,
                "weight": service.weight
            })

# CSP Domain Detection
if signals.http_signals.csp:
    csp_domains = extract_domains(signals.http_signals.csp)
    for domain in csp_domains:
        for service in THIRD_PARTY_SERVICES:
            if any(pattern in domain for pattern in service.domain_patterns):
                add_service(results, service.name, service.category, {
                    "type": "csp_domain",
                    "value": domain,
                    "weight": service.weight - 10  # Slightly lower weight
                })

# DNS TXT Record Detection
for txt in signals.dns_signals.txt_records:
    for service in THIRD_PARTY_SERVICES:
        if service.txt_pattern and service.txt_pattern in txt:
            add_service(results, service.name, service.category, {
                "type": "dns_txt",
                "value": txt,
                "weight": service.weight
            })

# Job Posting Detection
if signals.job_signals:
    for tech_mention in signals.job_signals.tech_mentions:
        for service in THIRD_PARTY_SERVICES:
            if service.name.lower() in tech_mention.technology.lower():
                add_service(results, service.name, service.category, {
                    "type": "job_posting",
                    "value": f"Mentioned in job postings",
                    "weight": 20  # Lower weight for job signals
                })

return results

Output

{ "skill": "third_party_detector", "results": { "technologies": [ { "name": "Stripe", "category": "Payment Processing", "signals": [ { "type": "script_url", "value": "https://js.stripe.com/v3/", "weight": 40 }, { "type": "csp_domain", "value": "api.stripe.com in CSP", "weight": 30 } ], "total_weight": 70, "integration_type": "Client-side SDK" }, { "name": "Google Analytics 4", "category": "Analytics", "signals": [ { "type": "script_url", "value": "https://www.googletagmanager.com/gtag/js", "weight": 40 }, { "type": "js_global", "value": "gtag() function detected", "weight": 35 } ], "total_weight": 75, "tracking_id": "G-XXXXXXXXXX" }, { "name": "Intercom", "category": "Customer Support", "signals": [ { "type": "script_url", "value": "https://widget.intercom.io/widget/", "weight": 40 } ], "total_weight": 40, "integration_type": "Chat Widget" }, { "name": "Sentry", "category": "Error Monitoring", "signals": [ { "type": "script_url", "value": "https://browser.sentry-cdn.com/", "weight": 40 } ], "total_weight": 40, "integration_type": "Client-side SDK" }, { "name": "Auth0", "category": "Authentication", "signals": [ { "type": "csp_domain", "value": "*.auth0.com in CSP", "weight": 35 }, { "type": "job_posting", "value": "Auth0 mentioned in job requirements", "weight": 20 } ], "total_weight": 55 } ], "services_by_category": { "Payment Processing": ["Stripe"], "Analytics": ["Google Analytics 4", "Google Tag Manager"], "Customer Support": ["Intercom"], "Error Monitoring": ["Sentry"], "Authentication": ["Auth0"] }, "integration_summary": { "total_services": 5, "categories_covered": 5, "client_side_integrations": 4, "server_side_likely": ["Auth0", "Stripe"] } } }

Confidence Notes

Third-party detection confidence varies by signal type:

Signal Type Confidence Notes

Script URL High (90%) Direct integration

JS Global High (85%) Library loaded

CSP Domain Medium (75%) May be unused

DNS TXT High (90%) Official verification

Job Posting Low (60%) May be planned/legacy

Error Handling

  • Missing scripts: May indicate server-side only integration

  • Multiple analytics: Common - report all

  • Deprecated services: Note if detected

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pentest

No summary provided by upstream source.

Repository SourceNeeds Review
General

hackerone

No summary provided by upstream source.

Repository SourceNeeds Review
General

domain-assessment

No summary provided by upstream source.

Repository SourceNeeds Review