Se connecter

Informatique

Programmation

Sujet : [Python] Bloqué avec mon webscrapper japscan (Selenium)
1
AgentMamadou
Niveau 12
23 mai 2022 à 19:08:42

Bonjour,

Il y a quelques mois j'ai écris un webscrapper qui me permettrait de récupérer les images du site Japscan (je ne donnerai pas l'URL pour des raisons évidentes)

Je pense que le site est accoutumé aux webscrappers car il semble disposer de pas mal de sécurité.

Le processus que le site utilise pour afficher les images semble être le suivant:

Il y a une <div> dont l'id est "image" avec comme paramètre data-src="url chiffrée"
A partir de cet URL chiffré il y a surement un script JS qui va chercher l'image à sa source sur le serveur.
La <div> image est ensuite peuplée de plusieurs canvas et d'un <a> qui fournit le lien vers la page suivante.

Du coup mon processus pour récupérer les pages était le suivant

# on recupere la div image
imageElement = driver.find_element(By.ID, "image")
# on attend que l'image soit affichée
WebDriverWait(imageElement, 10).until(EC.presence_of_element_located((By.TAG_NAME, "a")))
# ensuite je peux enregistrer l'image en faisant imageElement.screenshot()

Le problème c'est que maintenant quand j'accède au site depuis Selenium l'image n'est jamais chargée, comme s'il arrivait à détecter que j'utilisais un navigateur automatisé.
Il y aurait pas un paramètre à modifier pour tromper le site ?

Azerban
Niveau 15
23 mai 2022 à 19:24:34

Utilise Playwright avec les bindings en Python au lieu de ce bloatware qu'est selenium.

Mais dans l'absolu regarde dans les requêtes XHR pour examiner les données à la source (plus besoin de parser le HTML). Utilise un User-Agent convenable avec des Headers qui correspondent à ton navigateur pour feindre un réel navigateur (ça fonctionne la plupart du temps).

Si l'url est chiffrée regarde le processus de chiffrement (c'est souvent encodé en base64 ou alors chiffré avec un algo simple type chiffrement par décalage).

Azerban
Niveau 15
23 mai 2022 à 19:59:34

Bon j'ai pigé le chiffrement, c'est un chiffrement par substitution. Si tu prends cette page https://www.japscan.ws/leecture-en-ligne/out/137/7.html

L'url chiffrée est celle-ci :

https://cdn.statically.io/img/c.japscan.ws/xfyfxgffsfmfestsonasawefgwnstsys488fffwfmsnf4fmststssans4fgs5a1syy5fwygfeftfwyxfawwf5f/fsyymf5y4fxg4fmsmson1s8fnfanasysas1ftsnnaf41gf4nnfayafgwfs8fwsgofft8ff1w8fnbmf8aasywt8/aat8tna8xygs86asw8gsggssmfn8nqxfn8xsm188498ss61w18sfw1mffq5wf8ef5fffgymftqmwwntataoaxq/ynxqfw.jpg

(J'ai juste rajouté le lien vers le CDN devant).

L'URL finale est celle-ci :

https://cdn.statically.io/img/c.japscan.ws/d080d60030a0b3e3512329b06913e383f4400090a310f0a3e3e33213f063c27388c09860b0e098d02990c0/0388a0c8f0d6f0a3a3517340102123832370e31120f760f1102820690340936500e40079401va0422389e4/22e4e124d8634w2394636633a0141xd014d3a744fs433w79743097a00xc904b0c00068a0exa991e2e252dx/81dx09.jpg

Tu peux la copier/coller dans le navigateur.

Tu n'as plus qu'à boucler sur les deux paths des URLs pour avoir les combinaisons lettre chiffrée/lettre déchiffrée.

AgentMamadou
Niveau 12
23 mai 2022 à 20:33:10

Ah merci je me sens bête de pas avoir essayé de déchiffrer l'url tout de suite ça simplifierai énormément le processus.

J'ai repéré un script en rapport avec le chiffrement ou déchiffrement grâce aux requêtes XHR comme tu parlais. je verrais ça demain

Azerban
Niveau 15
23 mai 2022 à 21:43:00

Si jamais tu ne veux pas t'embêter à chiffrer/déchiffrer l'url, tu peux avec playwright, intercepter les requêtes qui demandent une image et stocker ainsi l'image renvoyée dans la réponse du serveur.

1
Sujet : [Python] Bloqué avec mon webscrapper japscan (Selenium)
   Retour haut de page
Consulter la version web de cette page