Nodejs 谷歌2亿2千5百万用户ID遭曝光
Nodejs 谷歌2亿2千5百万用户ID遭曝光
英国人Robert Pitt今早在Github上公布了他的爬虫脚本,导致任何人都可以容易地取得Google Plus的大量公开用户的ID信息。至今大概有2亿2千5百万用户ID遭曝光。早在几个月之前Robert就向谷歌报告此漏洞,谷歌放任自流,遭此劫数。
Robert在谷歌的gstatic.com服务器上找到了所有公开用户的sitemap.xml文件,顺此线索写出的Javascript脚本包括注释只有71行。 此脚本在2012年1月18日取得了1亿7百万个帐号,现在则可以取得2亿2千5百万个帐号,也就是说Google Plus的用户在4个月里增加了将近1亿2千万,用户数翻了1翻还多。
也许谷歌大概认为这些用户信息都是公开的,即使你看到了他们也无所谓。可那些spammer不一定这么想吧。 何况大量用户不懂得如何设置隐私保护,难保大量的悄悄话已经公布在网上了。
Robert的脚本:https://github.com/robertpitt/plus-scraper
亮点在于是个nodejs脚本,非常短。。。
转载来自:http://cnbeta.com/articles/183586.htm
感谢baryon的分享
Node.js 谷歌2亿2千5百万用户ID遭曝光
摘要
英国人 Robert Pitt 在 Github 上公布了他的爬虫脚本,导致任何人都可以轻松获取 Google Plus 的大量公开用户 ID 信息。据估计,目前已有约 2.25 亿个用户 ID 遭曝光。Robert 在几个月前已向谷歌报告此漏洞,但谷歌并未采取行动,最终导致这一大规模数据泄露事件。
爬虫脚本细节
Robert 在 Google 的 gstatic.com 服务器上发现了所有公开用户的 sitemap.xml
文件。他通过分析这些文件,编写了一个简短的 Node.js 脚本来抓取用户 ID。该脚本仅包含 71 行代码,并且附带了详细的注释,方便其他开发者理解其工作原理。
示例代码
以下是一个简化版的 Node.js 脚本,用于从 sitemap.xml
文件中提取用户 ID:
const axios = require('axios');
const cheerio = require('cheerio');
// 获取 sitemap.xml 文件
async function fetchSitemap() {
try {
const response = await axios.get('https://plus.google.com/sitemap.xml');
return response.data;
} catch (error) {
console.error('Failed to fetch sitemap:', error);
}
}
// 解析 sitemap.xml 文件并提取用户 ID
function parseSitemap(xml) {
const $ = cheerio.load(xml);
const userIds = [];
// 查找所有包含用户 ID 的链接
$('loc').each((index, element) => {
const url = $(element).text();
if (url.includes('/u/')) {
const userId = url.split('/u/')[1].split('/')[0];
userIds.push(userId);
}
});
return userIds;
}
// 主函数
async function main() {
const sitemapXml = await fetchSitemap();
const userIds = parseSitemap(sitemapXml);
console.log(`Found ${userIds.length} user IDs.`);
userIds.forEach(id => console.log(id));
}
main();
解释
- fetchSitemap 函数:使用
axios
库来异步获取sitemap.xml
文件的内容。 - parseSitemap 函数:使用
cheerio
库解析 XML 文件,从中提取用户 ID。这里假设用户 ID 位于 URL 中/u/
后面的部分。 - main 函数:调用上述两个函数,打印出找到的用户 ID 数量以及具体的用户 ID。
安全问题
尽管这些用户信息是公开的,但如此大规模的数据泄露仍然可能引发严重的安全问题。例如,垃圾邮件发送者可能会利用这些数据进行恶意活动。此外,许多用户可能没有意识到他们的隐私设置不足,导致敏感信息被暴露在网络上。
结论
这次事件再次提醒我们,在开发和使用网络服务时,必须重视用户隐私和数据安全。同时,对于发现的安全漏洞,平台提供商应尽快采取措施修复,以防止潜在的风险。
此示例代码仅为简化版本,实际应用中可能需要更多的错误处理和优化。
NB啊
无语。。
顺此线索写出的Javascript脚本包括注释只有71行… 居然还有注释
尝试了下,有结果
这是我投递给cnbeta.com的,转载需要来个链接 http://cnbeta.com/articles/183586.htm
喜欢这种生活
这个脚本很震撼啊 首先下载一个索引文件 有20万个网址,然后把这写网址全部下载到本地。。。好恨啊,脚本里直接 for(var i=0;i++;i<20万){
http.get(requestOptions, function(response){
保存文件();
})
}
这个太狠了吧,什么别的参数都不用控制啊,太简单了啊(我虚拟机2G内存,cpu30%,内存15%)。
真牛啊
该问题描述了一个安全漏洞,其中包含了一个用于抓取和暴露Google Plus用户ID的Node.js脚本。该脚本利用了Google服务器上的sitemap.xml
文件来收集公开的用户ID。
由于涉及到用户数据的隐私泄露问题,我们不能直接提供该脚本的示例代码。但是,我可以简要解释一下这种类型的脚本可能的工作原理,并强调数据抓取时应该遵循的道德规范和法律法规。
解释
假设我们有一个合法的场景需要抓取网站的数据(例如搜索引擎索引网站),我们通常会使用Node.js中的axios
或request
库来发起HTTP请求,并使用cheerio
库来解析HTML文档。但抓取用户数据时,应确保遵循网站的robots.txt
文件规定以及相关的法律和隐私政策。
// 示例代码:一个简单的Node.js脚本用于抓取网页内容
const axios = require('axios');
const cheerio = require('cheerio');
async function fetchWebsiteContent(url) {
try {
const response = await axios.get(url);
const $ = cheerio.load(response.data);
// 解析网页内容并处理
console.log($('title').text());
} catch (error) {
console.error(`Error fetching ${url}:`, error.message);
}
}
fetchWebsiteContent('https://example.com');
重要提示
- 遵守法律与政策:始终遵守目标网站的使用条款、
robots.txt
文件以及任何适用的国家和地区法律法规。 - 尊重隐私:不要抓取或暴露个人身份信息(PII)或敏感信息。
- 伦理责任:在进行任何形式的数据抓取前,请确保您的行为符合道德标准。
上述内容仅用于教育目的,展示如何合法且道德地使用Node.js进行网页抓取。实际应用中,请务必遵循相关法律法规及道德准则。