Puppeteer mettre headless: false sur serveur Ubuntu


#1

Bonjour,

je m’entraîne avec Puppeteer que j’ai bien réussi à faire fonctionner en locale.
Là j’ai pris un server VPS ovh et j’ai installé node + Puppeteer .
Mon script de capture d’écran fonctionne bien, seulement impossible de mettre headless à false. Il y a l’erreur :

Error: Failed to launch chrome!
[0122/011018.030406:ERROR:nacl_helper_linux.cc(310)] NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly

TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

Quand je laisse à “true”, aucun souci, ça marche très bien.

Sur le VPS j’ai un :Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial

Aussi testé avec “no sandbox” comme ci-dessous, mais pas de changement.
const browser = await puppeteer.launch({
headless: false,
args: [’–no-sandbox’, ‘–disable-setuid-sandbox’],
});

Testé avec node 10.15 - node 8.9.1 - node 8.15.0
puppeteer: “version”: “1.11.0”

Merci de votre aide.


#2

Hello !

Plusieurs remarques:

  • Pourquoi lancer une instance de Chrome/Chromium en non headless depuis un serveur distant (ordinateur sans écran donc), quel intérêt?
  • Le serveur distant que tu utilises possède une version d’Ubuntu server, sans serveur X (pas d’interface graphique en gros). Or, quand tu demandes l’exécution de Chrome en headless=false, tu demandes quelque chose d’impossible: ouvrir une fenêtre (interface graphique) de Chrome dans un environnement serveur, sans gestionnaire d’interfaces graphiques.

Le but étant de faire fonctionner Chrome en headless=true sur les serveurs distants, cela n’a pas de sens de le mettre à false… A moins que tu aies une très bonne raison pour vouloir faire ça?


#3

Merci pour ta réponse,
en fait je test l’accès à un site avec Puppeteer, et le problème est que mon script est directement détecté comme étant un bot. Donc je pense que c’est dut au fait qu’il est en mode headless: true.
Je te donne le nom du site en privé.

Mon script est très basique, juste puppeteer qui fait une capture d’écran.


#4

Salut @corgan56,

J’ai fait un tutoriel sur l’utilisation de Puppeteer, tu peux t’inspirer de la configuration pour ton Ubuntu : https://www.yubigeek.com/nodejs-creer-bot-twitter-puppeteer/

Maxence.


#5

Je viens de regarder le tuto - très bon tuto au passage - par contre ça ne répond pas vraiment au problème de @corgan56, à savoir qu’on ne peut pas, et devrait pas lancer une instance de chrome en non headless depuis un serveur distant sans serveur X :confused:

Je comprends que tu souhaites promouvoir ton tuto mais ça n’a aucun rapport avec le problème mentionné ici …


#7

Votre script est directement détecté comme un bot, parce que justement vous êtes hébergé chez OVH…

Les classes réseaux sont connues, et des gens comme CloudFlare ou DataDome savent bien qu’une requête arrivant d’OVH est rarement un utilisateur humain.

Ce type de protection anti-bot basée sur ASN est un grand classique des gens qui se protègent un peu.

Si vous voulez du scraping as service clef en main, n’hésitez pas à nous solliciter. Cdt.


Team : CamilleBriceJulienVivianBorisXavierSteven.