如何在Chrome DevTools或Firefox中识别不安全的内容?

6
我的网页有时(很少)会出现“存在一些不安全的资源”警告图标(黄色锁),如下面的截图所示。但这种情况很少发生,现在我又遇到了一个,我不想再错过它,所以我不能冒失地关闭该页面。
页面的URL为:https://eksisozluk.com/sedat-kapanoglu-ve-40-kisiye-hapis-talep-edilmesi--3960310。您可能看不到警告(除非使用Firefox),因为我在Chrome上连续尝试时没有看到警告,并且当我收到错误时已登录。因此,让我们假设您和我将永远不会在Chrome上看到该警告图标。
当我使用该站点时,Devtools未打开,因此“网络”选项卡为空。那部分无法使用。
“资源”显示所有JS和CSS条目都是https,没有单个资源来自http。
该页面加载了jQuery,因此我尝试查询$('*[href^="http:"]')$('*[src^="http:"]'),但没有成功。该页面包含一些外部的http链接(不是资源,只是普通的a href),但这不会触发警报。
我正在使用卡巴斯基杀毒软件,它使用代理扫描进出流量。这可能会引起一些问题,尽管我到目前为止没有在其他网站上遇到任何问题。
我尝试“查看页面源代码”并搜索其中的http资源,但只有一个带有http资源链接的标签:
<meta name="twitter:image" content="http://eksisozluk.com/content/img/ilogo120.png" />

在图标变绿时,该内容实际上也存在于页面中。因此,这不可能是原因。

难道没有直接在Chrome中查看“不安全内容”的方法吗?

当我在Firefox中查看页面时,它会显示“部分加密”,但它也不会显示未加密的内容。在“媒体”选项卡中的所有项目都以“https://”开头。

实际上,现在我能够在Firefox上持续重现这个问题。我查看了网络选项卡,没有任何东西显示为http:// ,但Firefox告诉我“部分加密”。我不确定Firefox是否出于与Google相同的原因而这样说(因为Firefox在这方面非常一致和坚定),但我提供这两种情况,以防它们属于同一根本原因。

最后,我在Chrome控制台中编写了此代码来查找罪魁祸首:

$("*").each(function (index, elem) {
  var attrs = elem.attributes;
  for(var n = 0; n < attrs.length; n++) {    
    var attr = attrs[n];
    if(attr.nodeValue.indexOf("http://") >= 0) {
      console.log("FOUND: <" + elem.nodeName + " " + attr.nodeName + "='" + attr.nodeValue + "'>");
      console.log($(elem));
    }
  }
});

输出结果没有有趣的内容。只有Twitter参考的<META content><A href>和Mvc-Mini-Profiler插入的两个<TD title="http://...">。当然,它们都不能证明警告的存在。以下是完整的输出:http://pastebin.com/kgV8XHgN 所以这看起来非常有趣。在DOM中没有一个包含“HTTP”链接的元素,但Chrome警告存在“不安全”的内容。我很困扰。
页面上没有iframes。($("iframe")返回[]
编辑:该死,我丢失了页面:((导航到一个链接并返回按钮变成SSL图标为绿色)。我知道它不会持续太久。但我仍然感激任何帮助,因为这不是我第一次遇到这个问题。

1
你确定没有涉及到浏览器扩展吗?你能在另一台机器/设备上重现它吗? - Konrad Dzwinel
1
您可能还想查看之前提出的类似问题:https://dev59.com/6G865IYBdhLWcg3wOb9h 和 https://dev59.com/I3NA5IYBdhLWcg3wHp-B。 - Konrad Dzwinel
它可能是因为没有使用TLS 1.2吗? - JSmyth
@JSmyth 据我所知,任何浏览器都不会对缺少TLS 1.2支持发出警告。 - Sedat Kapanoglu
1
@ssg 这有点牵强哈哈 =) 最近没怎么看到自己。我记得我们曾经遇到过一个问题,当时 IE 8 或 9 抱怨 TLS 1.0,升级到 TLS 1.1 就解决了。我可能记错了,但如果有人遇到类似的问题,请告诉我们。 - JSmyth
显示剩余4条评论
5个回答

14

我刚刚遇到了这个问题——如果你在 Chrome 中检查 Javascript 控制台,它现在会告诉你问题出在哪里。


是的,那就是正确答案。当我在2013年提出这个问题时,Chrome的控制台还没有那个功能。 - Sedat Kapanoglu

4

昨天我也遇到了同样的问题,发现了http://www.whynopadlock.com/

它显示哪些元素不安全,并验证证书链。

顺便说一下,如果您的网站可以同时加载http和https,则应从外部URL中省略http:

不要这样写:

src="http://external.dom/external.js" or "https://external.dom/external.js"

只是:

src="//external.dom/external.js"

然后浏览器将根据页面加载的方式使用http或https。


+1 for whynopadlock.com。我在CSS文件中发现了一个不安全的http引用,它立即发现了这个问题。 - Obfuskater

2

我刚刚遇到了一个类似的问题,Chrome和IE显示绿色的SSL锁,但是Firefox却不行(只有在页面重新加载后才显示)。

首先:为了调试SSL问题,httpfox插件似乎比Firebug的网络选项卡更好用。Firebug会将所有源都显示为https,但是通过查看httpfox,我很快就找到了罪魁祸首:Google Analytics通过http加载了___utm.gif跟踪像素。这个跟踪像素来自上一个页面,在那里我正在跟踪一个与按钮点击相关的Google Analytics事件。

这似乎是Firefox的一个错误:当在HTTP页面跟踪GA事件并转到HTTPS页面(例如单击“继续”按钮)时,FF会在HTTPS页面上通过http加载跟踪像素,从而导致错误。

我从按钮中删除了该事件,Firefox也停止抱怨部分加密连接了。


我们正在使用GA,但我不确定是否是这种情况。但知道这一点很好。我之前不知道HttpFox。 - Sedat Kapanoglu

0

听起来最有可能使用了带有http:// URL的AJAX资源...您最有可能需要网络面板或控制台进行检查。

Firefox内置的开发人员工具具备这些功能。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接