CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • French Days
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • French Days
  • RetourHigh-Tech
    • French Days
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Python] Bloqué avec mon webscrapper japscan (Selenium)

DébutPage précedente
1
Page suivantePage suivante
AgentMamadou AgentMamadou
MP
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 Azerban
MP
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 Azerban
MP
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 AgentMamadou
MP
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 Azerban
MP
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.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment