Dav*_*och 43 javascript http http-headers
我正在调查google.com在firebug中的Net活动,因为我很好奇并注意到请求返回"204 No Content".
事实证明,204 No Content"主要是为了允许在不引起用户代理的活动文档视图更改的情况下进行操作的输入,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动中的文档视图." 随你.
我查看了JS源代码,看到像这样请求"generate_204":
(new Image).src="http://clients1.google.com/generate_204"
Run Code Online (Sandbox Code Playgroud)
根本没有变量声明/赋值.
我的第一个想法是,它被用于跟踪Javascript是否已启用.但是,"(新图像).src ='...'"调用无论如何都是从动态加载的外部JS文件中调用的,因此这将毫无意义.
任何人都有任何关于这一点的想法?
UPDATE
"/ generate_204"似乎可以在许多谷歌服务/服务器上使用(例如,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];
}
};
Run Code Online (Sandbox Code Playgroud)
小智 34
我发现这个旧线程虽然google'ing为generate_204,因为Android似乎使用它来确定wlan是否打开(响应204被接收)关闭(根本没有响应)或被阻止(重定向到强制门户网站存在).在这种情况下,会显示一条通知,要求登录WiFi ...
Mat*_*ley 25
就像Snukker所说,clients1.google.com是搜索建议的来源.我的猜测是,他们会在您需要之前提出强制client1.google.com强制进入您的DNS缓存的请求,这样您在第一个"真实"请求上的延迟就会减少.
谷歌浏览器已经为页面上的任何链接执行此操作,并且(我认为)当您在位置栏中键入地址时.这似乎是一种让所有浏览器都做同样事情的方法.
小智 17
如果Chrome检测到SSL连接超时,证书错误或可能由强制网络门户(例如酒店的WiFi网络)引起的其他网络问题,则Chrome会向http://www.gstatic发出无cookie请求. com/generate_204并检查响应代码.如果该请求被重定向,Chrome将在新标签页中打开重定向目标,前提是它是一个登录页面.不会记录对强制网络门户检测页面的请求.
字体:谷歌Chrome隐私白皮书
Sur*_*esh 10
谷歌正在使用它来检测设备是在线还是在强制门户中.
Shill是Chromium OS的连接管理器,它会在服务转换到就绪状态时尝试检测强制网络门户内的服务.通过尝试检索网页http://clients3.google.com/generate_204,可以确定是在强制门户中还是在线.已知这个众所周知的URL返回具有HTTP状态204的空页面.如果由于任何原因未返回网页,或者接收到除204之外的HTTP响应,则shill将该服务标记为处于门户状态.
以下是Google Chrome隐私权白皮书的相关说明:
如果Chrome检测到SSL连接超时,证书错误或可能由强制网络门户(例如酒店的WiFi网络)引起的其他网络问题,则Chrome会向http://www.gstatic发出无cookie请求. com/generate_204并检查响应代码.如果该请求被重定向,Chrome将在新标签页中打开重定向目标,前提是它是一个登录页面.不会记录对强制网络门户检测页面的请求.
更多信息:http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection
有时在AJAX中使用204个响应来跟踪点击次数和页面活动.在这种情况下,在get请求中传递给服务器的唯一信息是cookie而不是请求参数中的特定信息,因此这似乎不是这种情况.
似乎clients1.google.com是谷歌搜索建议背后的服务器.当您访问http://www.google.com时,Cookie会传递到http://clients1.google.com/generate_204.也许这是在服务器上启动某种会话?无论用什么,我都怀疑它是非常标准的用途.
谷歌为阻止垃圾邮件和搜索数据库的抓取做出了大量的努力,我相信这是跟踪机器人等工作的一部分。
一些简单的反机器人伪代码可能会像这样。
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
}
Run Code Online (Sandbox Code Playgroud)
我也相信最新的谷歌首页“主题”也是一个帮助反垃圾邮件/机器人活动的新工具。
** 注意** ipv6.google.com 也包括此措施。
只是我的毫无根据的未经证明的两个2p。