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的分享


12 回复

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();

解释

  1. fetchSitemap 函数:使用 axios 库来异步获取 sitemap.xml 文件的内容。
  2. parseSitemap 函数:使用 cheerio 库解析 XML 文件,从中提取用户 ID。这里假设用户 ID 位于 URL 中 /u/ 后面的部分。
  3. main 函数:调用上述两个函数,打印出找到的用户 ID 数量以及具体的用户 ID。

安全问题

尽管这些用户信息是公开的,但如此大规模的数据泄露仍然可能引发严重的安全问题。例如,垃圾邮件发送者可能会利用这些数据进行恶意活动。此外,许多用户可能没有意识到他们的隐私设置不足,导致敏感信息被暴露在网络上。

结论

这次事件再次提醒我们,在开发和使用网络服务时,必须重视用户隐私和数据安全。同时,对于发现的安全漏洞,平台提供商应尽快采取措施修复,以防止潜在的风险。


此示例代码仅为简化版本,实际应用中可能需要更多的错误处理和优化。


无语。。

顺此线索写出的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中的axiosrequest库来发起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进行网页抓取。实际应用中,请务必遵循相关法律法规及道德准则。

回到顶部