我正在调查google.com在firebug中的网络活动,因为我很好奇并注意到请求正在返回“204 No Content。”
事实证明,204 No Content“主要是为了允许在不引起用户代理的活动文档视图更改的情况下进行操作的输入,尽管任何新的或更新的元信息应该应用于当前在文档中的文档。用户代理的活动视图。“不管。
我查看了JS源代码,发现请求“generate_204”是这样的:
(new Image).src="http://clients1.google.com/generate_204"
根本没有变量声明/赋值。
我的第一个想法是它被用于跟踪Javascript是否已启用。但是“(新图像).src ='...'”调用无论如何都是从动态加载的外部JS文件中调用的,所以这样做毫无意义。
任何人都对这一点有什么想法?
更新
“/ generate_204”似乎可在许多Google服务/服务器上使用(例如maps.google.com/generate_204,maps.gstatic.com/generate_204等等。)
您可以通过为您的网络应用可能使用的每个Google拥有的服务预先获取generate_204页面来利用此功能。像这样:
window.onload = function(){
var two_o_fours = [
// google maps domain ...
"http://maps.google.com/generate_204",
// google maps images domains ...
"http://mt0.google.com/generate_204",
"http://mt1.google.com/generate_204",
"http://mt2.google.com/generate_204",
"http://mt3.google.com/generate_204",
// you can add your own 204 page for your subdomains too!
"http://sub.domain.com/generate_204"
];
for(var i = 0, l = two_o_fours.length; i < l; ++i){
(new Image).src = two_o_fours[i];
}
};
答案 0 :(得分:34)
我发现这个旧线程虽然google'ing为generate_204,因为Android似乎使用它来确定wlan是否已打开(响应204已收到)已关闭(根本没有响应)或被阻止(重定向到强制门户网站) 。在这种情况下,会显示一条通知,要求登录WiFi ...
答案 1 :(得分:25)
像Snukker所说,clients1.google.com是搜索建议的来源。我的猜测是,他们会在您需要之前提出强制client1.google.com强制进入DNS缓存的请求,这样您在第一次“真实”请求时的延迟就会减少。
谷歌浏览器已针对页面上的任何链接执行此操作,并且(我认为)当您在位置栏中键入地址时。这似乎是让所有浏览器都做同样事情的方法。
答案 2 :(得分:17)
如果Chrome检测到SSL连接超时,则为证书 错误或可能由俘虏引起的其他网络问题 门户网站(例如酒店的WiFi网络),Chrome将制作一个 对http://www.gstatic.com/generate_204的无cookie请求并检查 响应代码。如果该请求被重定向,Chrome将会打开 假设它是登录页面,在新选项卡中重定向目标。 不会记录对强制网络门户检测页面的请求。
字体:Google Chrome隐私权白皮书
答案 3 :(得分:10)
Google正在使用它来检测设备是在线还是在强制门户中。
Shill是Chromium OS的连接管理器,只要服务转换到就绪状态,就会尝试检测强制网络门户内的服务。通过尝试检索网页http://clients3.google.com/generate_204来确定是在强制门户中还是在线。已知这个众所周知的URL返回具有HTTP状态204的空页面。如果由于任何原因未返回网页,或者接收到除204之外的HTTP响应,则shill将该服务标记为处于门户状态。
以下是Google Chrome Privacy Whitepaper:
的相关说明如果Chrome检测到SSL连接超时,证书错误或可能由强制网络门户(例如酒店的WiFi网络)引起的其他网络问题,则Chrome会向http://www.gstatic.com/generate_204发出无Cookie请求并检查响应代码。如果该请求被重定向,Chrome将在新标签页中打开重定向目标,前提是它是一个登录页面。不会记录对强制网络门户检测页面的请求。
更多信息:http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection
答案 4 :(得分:5)
有时在AJAX中使用204个响应来跟踪点击次数和页面活动。在这种情况下,在get请求中传递给服务器的唯一信息是cookie,而不是请求参数中的特定信息,因此这似乎不是这种情况。
似乎clients1.google.com是谷歌搜索建议背后的服务器。当您访问http://www.google.com时,Cookie会传递给http://clients1.google.com/generate_204。也许这是在服务器上启动某种会话?无论用什么,我都怀疑它是非常标准的用途。
答案 5 :(得分:4)
一些简单的反僵尸伪就可以这样。
On GET (google.*) Save RemoteEndPoint
{
If RemoteEndPoint GETs (clients1.google.com/generate_204) Then
Set botAlert_stage1 = false;
Else
Set botAlert_stage1 = true;
End If
}
我也相信最新的谷歌首页'主题'也是一个帮助反垃圾邮件/机器人活动的新工具。
**注意** ipv6.google.com也包含此措施。
只是我毫无根据的未经证实的两个2p。
答案 6 :(得分:3)
本文件解释:
http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1417&context=ecetr&sei-redir=1
(搜索generate204 )
相关部分:
在不同的对象中,javascript函数触发发送到应该为视频提供服务的视频服务器的 generate204 请求。这将启动视频预取,它有两个主要目标:首先,它强制客户端执行视频服务器名称的DNS解析。其次,它强制客户端打开到视频服务器的TCP连接。两者都有助于加快视频下载阶段。
此外, generate204 请求与真实视频下载请求的格式和选项完全相同,因此最终警告视频服务器客户端可能很快就会下载该视频。请注意,视频服务器会回复
204 No Content
响应,如命令所暗示的那样,到目前为止还没有下载任何视频内容。
答案 7 :(得分:2)
我发现这篇博文说明它用于记录点击次数。如果没有谷歌的官方消息,可以使用任何数量的东西。
http://mark.koli.ch/2009/03/howto-configure-apache-to-return-a-http-204-no-content-for-ajax.html
答案 8 :(得分:2)
许多应用程序访问此URL以确定它们是否具有仅导致强制网络门户的连接。
这个想法是任何强制网站认为这是一个正常的&#34;网站,然后将您重定向到其门户网站,该网站返回状态为200.如果某个应用程序试图访问任何普通网站,则会遇到完全意外的响应,并且可能无法找出问题所在。但是,使用此URL很容易:如果您获得状态200,则您位于强制网络门户中,您可以告诉用户对其执行某些操作(通常使用浏览器登录门户网站,或转向WiFi关闭并依赖3G,如果他们正在使用手机)。如果您获得状态204,则表示您已连接到Google,因此您的应用程序实际上已连接到互联网。
微软和苹果采用略有不同的方法;他们都有一些网址可以返回状态为200的非常具体的短信息,因此您可以转到&#34; captive.apple.com&#34;而不是访问Google网址。并检查状态200,数据=&#34;成功&#34;没有别的。如果您获得状态200而不是那个数据,则您再次进入强制门户网站。
答案 9 :(得分:0)
生成204可以动态加载搜索标准的建议。我可以从我的负载测试脚本中看到,每次用户输入文本框时,这似乎都对每个服务器调用负责
答案 10 :(得分:-1)
好吧,我一直在关注这个问题,并且导致Google记录引用他们来自第一次访问google.com的地方。使用谷歌浏览器进行跟踪我有90%的猜测是日志记录引用,可能用户代理统计,当Google发布其浏览器使用标准列表时众所周知:
请求方法:获取
状态代码: 204无内容
响应标题
“ ^请求标题 ”下的“ Referer ”显示许多人来自的Google视频统计信息< strong> Microsoft.com ,同时将“ Windows 7 ”解析为 帮我关注在我的追加搜索中的Windows 7上 该会话
//史蒂芬