微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

公开的LinkedIn页面需要​​在Puppeteer中进行身份验证,但在Chromium / Chrome中手动粘贴网址时不需要

如何解决公开的LinkedIn页面需要​​在Puppeteer中进行身份验证,但在Chromium / Chrome中手动粘贴网址时不需要

我试图使用Puppeteer在Linkedin上打开一个公开公司页面,但是每次将其重定向到身份验证表单时。当我在Chromium或Chrome中手动粘贴URL时,不会发生这种情况。

这是代码

const puppeteer = require("puppeteer");

(async () => {
    const url = "https://www.linkedin.com/company/google/";

    const browser = await puppeteer.launch({
        headless: false,args: [
            "--lang=en-GB","--no-sandBox","--disable-setuid-sandBox","--disable-gpu","--disable-dev-shm-usage",],defaultviewport: null,pipe: true,slowMo: 30,});

    const page = await browser.newPage();

    await page.goto(url,{
        waitUntil: 'networkidle0',});

    await page.waitForSelector(".top-card-layout__entity-info-container",{ timeout: 10000 });

    await page.close();
    await browser.close();
})();

这是重定向浏览器的地方:

enter image description here

如果我在Chromium或Chrome中手动粘贴网址https://www.linkedin.com/company/google/,则不会发生这种情况。

到目前为止,我已经尝试过:

  • 使用incognito浏览器上下文:
// [...]

const context = await browser.createIncognitobrowserContext();
const page = await context.newPage();

// [...]
const puppeteer = require("puppeteer-extra");
puppeteer.use(require("puppeteer-extra-plugin-stealth")());

// [...]
const randomUserAgent = require("random-useragent");

// [...]

await page.setUserAgent(randomUserAgent.getRandom());

// [...]

没有任何效果。还有什么可以尝试的吗?

解决方法

原因

这是由于Microsoft对配置文件的高度保护。如果您能够以隐身模式访问公开个人资料,我认为这是由一些共享cookie引起的,但是通常,由于AuthWall(在这种情况下会阻止您),因此您必须登录才能访问LinkedIn上的公开公司个人资料。对我来说,即使在非隐身窗口中,也始终需要登录。

数据专家John Koala的背景知识:

当微软收购LinkedIn时,他们投资了数十亿美元。 他们也开始行动,很快就与刮scrap作斗争。 像现在这样着名的公司,由于打官司,“ HiQ Labs”利用LinkedIn数据获得了可观的利润。

现在,LinkedIn面临的问题是,公共刮ing不是合法的罪行,他们失败了(像所有其他网站一样),无法阻止发达的公共刮ing。

因此,LinkedIn添加并增强了一项名为“ Authwall”的功能,该功能是非常敏感的抓取检测。它极少允许来自非授权帐户的任何公众意见,从而使得没有帐户就无法进行抓取。

使用帐户抓取是一种法律违法行为,由于需要维护帐户,因此难度要大得多。 这是HiQ Labs和所有其他刮板公司倒闭的时候。 HiQ看到数以百万计的利润锐减,他们在法庭上与LinkedIn竞争。

剩下的唯一一家报废公司是“ scraping.services”,未来几年将会发生的事情将保持有趣。

来源:John Koala,Why does LinkedIn no longer allow me to see public profiles without logging in? In: quora

我确信,整个前伪造者团队现在都在Microsoft工作,这不会使欺骗AuthWall变得更容易(请参阅:即使使用伪造者-多余的插件,也无法访问该页面)。


解决方案

访问稳定的LinkedIn页面的唯一方法是使用表单登录(或使用已登录且已经具有有效会话cookie的chrome配置文件)。

更新:由于使用现有帐户抓取自己的内容违反了LinkedIn的user agreement:建议您不要这样做。我上面的解决方案仅适用于一次性访问(无论如何这都不是有效的方案)。因此,最终的答案是:无法用p来访问这些配置文件。

,

尝试其他用户代理。 只需选择一个: https://developers.whatismybrowser.com/useragents/explore/software_type_specific/web-browser/

有关在puppeteer中实现用户代理的更多信息: https://dev.to/sonyarianto/user-agent-string-difference-in-puppeteer-headless-and-headful-4aoh

编辑:在尝试上述方法之前,请先尝试使用隐形插件: https://www.npmjs.com/package/puppeteer-extra-plugin-stealth

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。