You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript阻止网站在第三方URL封装Android App中加载?

如何阻止网站在第三方Android WebView应用中加载

遇到这种情况确实头疼——第三方用WebView打包你的网站还上架Play商店,不仅分流流量还违反AdSense条款。下面是几种可部署的JavaScript方案,帮你拦截这类WebView访问,同时补充一些长效解决建议:

1. 通过User-Agent特征检测拦截

Android WebView的User-Agent通常会带有特定标识,我们可以通过识别这些标识,区分WebView和正规手机浏览器(比如Chrome、Firefox)。

示例代码:

// 检测是否为非正规浏览器的Android WebView
function isUnauthorizedAndroidWebView() {
    const userAgent = navigator.userAgent.toLowerCase();
    
    // 基础判断:包含Android+WebView标识
    const hasAndroidWebView = userAgent.includes('android') && (userAgent.includes('webview') || userAgent.includes('wv'));
    
    // 排除正规浏览器(避免误拦合法访问)
    const isLegitBrowser = [
        'chrome', 'firefox', 'samsungbrowser', 
        'opera', 'edge', 'brave'
    ].some(browser => userAgent.includes(browser));
    
    return hasAndroidWebView && !isLegitBrowser;
}

// 页面加载时执行检测
window.addEventListener('DOMContentLoaded', function() {
    if (isUnauthorizedAndroidWebView()) {
        // 替换页面内容,提示用户使用浏览器访问
        document.body.innerHTML = `
            <div style="max-width: 600px; margin: 50px auto; padding: 2rem; text-align: center; font-family: system-ui, -apple-system, sans-serif;">
                <h2>访问受限</h2>
                <p>本网站仅支持在正规手机浏览器中打开,请使用Chrome、Firefox等浏览器访问。</p>
            </div>
        `;
        
        // 移除AdSense广告脚本和元素,彻底避免违规
        document.querySelectorAll('script[src*="adsbygoogle"], .adsbygoogle').forEach(el => el.remove());
    }
});

代码说明:

  • 先识别Android+WebView/wv的User-Agent特征
  • 排除常见正规浏览器的标识,防止误拦截真实用户
  • 一旦检测到违规WebView,直接替换页面内容并清理广告相关元素

2. 通过WebView专属API检测

部分Android WebView会暴露原生注入的对象(比如window.android),我们可以通过检测这些专属API进一步提高准确性:

示例代码:

function detectWebViewExclusiveAPIs() {
    // 检测是否存在Android原生注入的对象
    if (typeof window.android !== 'undefined') return true;
    // 检测WebView特有的navigator属性
    if (navigator.appCodeName === 'Android' && !navigator.userAgent.includes('chrome')) return true;
    return false;
}

// 结合两种检测方式,提升准确率
function shouldBlockAccess() {
    return isUnauthorizedAndroidWebView() || detectWebViewExclusiveAPIs();
}

// 应用拦截逻辑
window.addEventListener('load', function() {
    if (shouldBlockAccess()) {
        document.body.innerHTML = '<div style="text-align:center; padding: 3rem;">请使用手机浏览器访问本网站,第三方应用中的访问已被限制。</div>';
        // 清理所有广告相关资源
        document.querySelectorAll('[data-ad-client], [data-ad-slot]').forEach(el => el.remove());
    }
});

3. 长效解决建议

代码拦截是临时方案,想要彻底解决问题,还需要配合以下措施:

  • 向Google Play申诉下架侵权应用:收集应用截图、你的网站版权证明,在Play商店的开发者支持页面提交侵权申诉,要求下架盗用你网站的应用。
  • AdSense后台配置域名授权:在AdSense后台的「允许的网站」中添加你的域名,禁止其他未授权域名展示广告(虽然WebView可能还是会加载页面,但AdSense不会为这类展示计费,降低违规风险)。
  • 定期监控Play商店:搜索你的网站域名或品牌关键词,及时发现新的侵权应用并处理。

注意:没有100%完美的拦截方案——有些开发者会修改WebView的User-Agent或隐藏API特征,但上述方法能覆盖绝大多数普通打包工具生成的应用。

内容的提问来源于stack exchange,提问作者Bips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:24:13