J'essaie d'ouvrir une page d'entreprise publique sur Linkedin en utilisant Puppeteer, mais chaque fois qu'il est redirigé vers un formulaire d'authentification. Cela ne se produit pas lorsque je colle manuellement l'URL dans Chromium ou dans Chrome.

Voici le code:

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

C'est là que le navigateur est redirigé:

enter image description here

Cela ne se produit pas si je colle manuellement l'URL https://www.linkedin.com/company/google/ dans Chromium ou Chrome.

Ce que j'ai essayé jusqu'à présent:

  • Utilisez un contexte de navigateur 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());

// [...]

Rien n'a fonctionné. Y a-t-il autre chose que je puisse essayer?

0
revy 30 août 2020 à 20:49

2 réponses

Meilleure réponse

La cause

Cela est dû à l'extrême protection de Microsoft sur les profils. Si vous pouvez visiter les profils publics en mode incognito, je pense que certains cookies partagés en sont responsables, mais normalement, vous ne pouvez pas visiter les profils d'entreprise publics sur LinkedIn sans vous connecter en raison d'AuthWall (qui vous bloque dans ce cas). Pour moi, la connexion est requise tout le temps, même à partir d'une fenêtre non incognito.

Un peu d'information de l'expert en données John Koala:

Lorsque Microsoft a acheté LinkedIn, ils ont investi des milliards dans l'achat. Ils ont également commencé à agir, très vite ils ont lutté contre le grattage. Des entreprises comme la désormais célèbre, en raison de sa bataille judiciaire, "HiQ Labs" utilisent les données de LinkedIn pour réaliser un énorme profit.

Maintenant, LinkedIn avait le problème que le grattage public n'est pas une infraction légale, ils ont échoué (comme tous les autres sites Web) à [o] empêcher le grattage public bien développé.

LinkedIn a donc ajouté et renforcé une fonctionnalité appelée «Authwall», qui est une détection de grattage très sensible. Il permet rarement des vues publiques de comptes non autorisés, ce qui rend le grattage sans compte impossible.

Le raclage avec des comptes est une infraction légale et c'est beaucoup plus difficile car les comptes doivent être tenus à jour. C'est à ce moment que HiQ Labs et toutes les autres entreprises de scraping ont cessé leurs activités. HiQ a vu des millions de bénéfices descendre dans l'évier, ils ont combattu LinkedIn au tribunal.

La seule entreprise qui reste à les gratter est «scraping.services», cela restera intéressant ce qui va se passer au cours des prochaines années.

Source: John Koala, Pourquoi LinkedIn ne me permet plus de voir les profils publics sans me connecter? Dans: quora

Je suis sûr que le fait que toute l'équipe d'anciens marionnettistes travaille maintenant chez Microsoft ne facilitera pas non plus la tromperie de l'AuthWall (voir: même avec puppeteer-extra-plugin-stealth est empêché de visiter la page).


Solution

La seule façon de visiter des pages LinkedIn de manière stable est de se connecter avec le formulaire (ou d'utiliser un profil Chrome connecté et disposant déjà de cookies de session valides).

Mise à jour : le fait de se gratter avec un compte existant enfreint le contrat d'utilisation de LinkedIn : il n'est pas conseillé de faire une telle chose. Ma solution ci-dessus s'applique uniquement aux visites uniques (ce qui n'est de toute façon pas un scénario valide). Donc la réponse finale est: il n'est pas possible de visiter ces profils avec le marionnettiste.

2
theDavidBarton 31 août 2020 à 11:48