最近我意识到,一些广告拦截器扩展(例如 adBlocker plus)会阻止一些 Ajax 调用。我在控制台上收到该错误:
GET http://localhost/prj/conn.php?q=users/list/ net::ERR_BLOCKED_BY_CLIENT
为什么它会阻止某些 Ajax 调用而不阻止其他调用,是什么原因导致的?除了告诉用户关闭广告拦截器之外,还有其他解决方法吗?
AdBlockers 通常有一些规则,即它们将 URI 与某种类型的表达式进行匹配(有时它们还将 DOM 与表达式进行匹配,但这在本例中并不重要)。
仅对一小部分文本(URI)进行操作的规则和表达式很容易产生一些误报...
除了指示您的用户禁用他们的扩展(至少在您的网站上)之外,您还可以获取扩展并测试哪些规则/表达式阻止了您的内容,前提是扩展提供了足够的详细信息。一旦确定了罪魁祸首,您可以尝试使用不同的 URI 来避免触发规则,向创建规则的团队报告规则不正确或过于宽泛,或者两者兼而有之。 检查特定附加组件的文档,了解如何执行此操作。
例如,AdBlock Plus 有一个 Blockable items 视图,显示页面上所有被阻止的项目以及触发阻止的规则。这些项目还包括 XHR 请求。
如果您的网址包含“advert”、“ad”、“doubleclick”、“click”或类似内容……
例如:
GET googleads.g.doubleclick.net/pagead/id
static.doubleclick.net/instream/ad_status.js
…然后广告拦截器就会拦截它。
我发现,如果文件名中包含
300
,AdBlock 会阻止页面并抛出 ERR_BLOCKED_BY_CLIENT
错误。
将 PrivacyBadger 添加到潜在原因列表中
我发现一个情况是如果你的url包含关键字banner,它也会被屏蔽。
我的哨兵呼叫因此失败,在 Brave 浏览器上禁用 Brave 广告屏蔽确实为我解决了这个问题。
如果有任何广告拦截器(Brave 浏览器使用默认拦截器),请将其关闭。这对我有用
只需切换一些 URL 查询参数的顺序就可以解决我的问题(显然 uBlock Origin 广告拦截规则不是很强大)。
就我而言,它是 Avira 的 Chrome 扩展程序和 Firefox 插件,名为“Avira 浏览器安全”。我在使用 1.7.4 版本时遇到了问题。 在我的具体情况下,我想登录一个名为 gliffy.com 的网站来制作图表,但登录后我得到一个空白页面。如果您在 Chrome 中使用 F12(控制台),您可以看到所有这些 ERR_BLOCKED_BY_CLIENT(和其他)错误。
如果您在无头模式下运行 chrome(例如使用 Puppeteer 或 Ferrum)并使用 URL 白列表并且请求与列表不匹配,也可能会发生此错误。
感谢您的回答!他们引导我找到了解决方案:
我通过使用包装我的请求的第三方服务器来欺骗这一点。
检查一下:
https://codetabs.com/cors-proxy/cors-proxy.html
GET "https://api.codetabs.com/v1/proxy?quest=your_blocked_url"
当然,用自己的服务器包起来更好。
Opera Blocker 和其他人检查网络中的所有文件/url。然后与列表进行比较。它是 EasyPrivacy 和 EasyList。如果您的文件/网址在this,您将被禁止。祝你好运。
所以...我找到了所有 addBlockers 的 FilterLists!