Web Scraping - Éviter la détection ! (Python)
Ғылым және технология
Web Scraping - Éviter la détection avec Python
Dans cette vidéo tu vas apprendre comment éviter la détection lorsque tu fais du web scraping avec python, en particulier en utilisant les headers HTTP (dont le user-agent) et des proxies.
Retrouve le code de la vidéo sur mon github : github.com/amaury-joycode/tut...
Пікірлер: 76
J'ai adoré ta vidéo très utile et pro. Je débute en Scraping et cela est très instructif. 😊
C trop bien mdrr, j'ai galeré pendant 2 mois avant de trouver la vidéo. Je t'aime mec t un bon j'ai juré. Continue comme ca
@Joycode_
2 жыл бұрын
Merci beaucoup ! Ravi d'avoir pu t'aider :)
Un grand bravo pour cette vidéo! Du code très propre, une vraie pédagogie même en utilisant des outils plus avancés... super intéressant!!! J'espère que tu continueras à faire des vidéos sur Python! Une seule façon de le savoir... je m'abonne! :)
@Joycode_
Жыл бұрын
Merci beaucoup ! Je viens de changer de boulot (toujours dans le développement) donc j'ai fait une petite pause, mais je reprends très vite :)
très précis, du contenu de qualité
Très très propre, merci beaucoup j'espère que tu vas continuer tes vidéos très quali 👏
@Joycode_
Жыл бұрын
Un grand merci !
Excellent tuto comme d'habitude.
@Joycode_
10 ай бұрын
Merci beaucoup !
Très bonne vidéo, les explications sont vraiment top !
@Joycode_
Жыл бұрын
Merci beaucoup !
*Trop bien ta video je commente rarement mais je kiff l'explication*
@Joycode_
2 жыл бұрын
Merci beaucoup pour ton commentaire !
Merci beaucoup pour ces infos. Je teste tout ca ;) Félicitations
@Joycode_
Жыл бұрын
Merci à toi 😊
Excellente vidéo merci beaucoup🙏
@Joycode_
Жыл бұрын
Merci à toi !
t'es vidéos sont incroyable merci beaucoup
@Joycode_
2 жыл бұрын
Merci à toi !
@naeryx1478
2 жыл бұрын
@@Joycode_ bonjour, j'aimerais savoir si tu pourrais m'aider, car depuis ta vidéo, j'ai essayé de créer un script python me permettant d'aller sur le site nike et de mettre directement un produit dans mon panier, mais je bloque à la partie ou je dois accepter les cookies. il parait qu'il y a une "" mais rien à faire, je n'arrive pas passer cette étapes as-tu une technique ou bien une explication ?
Merci beaucoup pour ce tuto 🙏
@Joycode_
11 ай бұрын
Merci à toi !
Merci cool comme vidéo
I don't speak french, but this video was very very helpfull, thank you very much. Greetings from Chile
@Joycode_
Жыл бұрын
Thanks a lot! All my code is accessible on Github (link in the description) should you need to have a second look at it :)
@falconarea
Жыл бұрын
@Joycode Great! I tried your code but I was instantly blocked by the page i'm trying to scrap. Do you got any more tricks to avoid detection?
Simple et concis🎆
@Joycode_
2 жыл бұрын
Merci beaucoup !
Franchement, merci😊
@Joycode_
11 ай бұрын
Avec plaisir 😊
Bravo! Vidéo claire et rapide avec de bonnes explications, la meilleure que j'ai pu trouver. Qu'est ce que tu utilises comme soft pour mettre en écran ton notebook de cette manière ?
@Joycode_
2 жыл бұрын
Merci beaucoup ! J'utilise l'extension Rise pour transformer le notebook en présentation. Après j'ai modifié le CSS moi-même pour avoir ce rendu, à toi de jouer avec si tu veux ton propre look & feel 😊
Merci
excellent
Super vidéo! Pourrais tu faire un tutoriel sur Scrapy?
@Joycode_
2 жыл бұрын
Merci beaucoup ! J'y réfléchis, ce que je reproche à scrapy c'est que sa configuration est très spécifique et donc ce qu'on apprend en l'utilisant ne s'applique pas facilement à d'autres domaines, au contraire de Sélénium et requests :)
Bravo et merci pour les informations !! S'il te plaît tu peux me dire avec quel outil tu fais tes présentations ?
@Joycode_
2 жыл бұрын
Merci beaucoup ! J'utilise jupyter notebook avec l'extension RISE : rise.readthedocs.io/en/stable/
Hello, super vidéo, je voulais juste savoir comment faire en sorte de changer le user_agent à chaque fois avec le fichier que tu as mis à disposition ?
@yovalo3382
11 ай бұрын
tu peux faire de manière aléatoire avec liste [int(len(liste)*random.random())]
super video. par contre j'ai l'impression que les proxy gratuits ne tiennent pas longtemps. que conseilles tu pour avoir un proxy stable?
@Joycode_
2 жыл бұрын
Je ne connais pas de solution légale autre que de payer un service de proxy malheureusement. La difficulté est qu'il faut être capable de gérer les bans d'IP, donc c'est difficile à monter soi-même.
Super vidéo. En revanche comment fait on pour changer les headers avec selenium ?
@Joycode_
Жыл бұрын
Ce n'est pas possible directement, en tous cas pas facilement. Une alternative à selenium permet de le faire en revanche : github.com/wkeeling/selenium-wire
Hello, super clair!!! Bravo;))) Mon objectif est de réaliser un bot pour click (sélénium, cliker...). Est ce que trafiquer les headers est suffisant? Merci pour ta réponse.
@Joycode_
Жыл бұрын
Tout va dépendre des mécanismes de détection mis en place par le site sur lequel le bot doit fonctionner. Attention néanmoins dans beaucoup de cas l'utilisation de bot est illégale ou enfreint les conditions d'utilisation des sites, donc renseigne toi avant de faire quoique ce soit sur un site qui n'est pas le tien. Le mieux est en général d'utiliser les API fournies par les sites eux-mêmes.
merci vraiment tu m'aides beaucoup en python ....... comment supprimé un mots de passe dans un script python ?
@Joycode_
2 жыл бұрын
Tu as plusieurs méthodes : soit tu demandes à l'utilisateur de le saisir au lancement du programme (avec getpass par exemple), soit tu récupères un mot de passe stocké ailleurs (fichier, réseau,...). C'est pour faire quoi ?
Bonjour, merci pour cette vidéo petite question : Est t'il possible de set des user agent avec sélénium ?
@Joycode_
Жыл бұрын
Oui c'est un header donc on peut normalement le préciser au moment de la requête (GET, POST,...). Cela dit je n'ai pas testé pour voir si cela écrase bien le user-agent par défaut du driver utilisé (Firefox dans notre exemple).
bonjour joycode j'ai essayé votre code aujourd'hui mais la seul réponse que je recois quand je test mon user-agent (5 minutes 36) de la vidéo c'est . Est ce normal ?
Bonjour, super vidéo ! Merci pour l'explication. Cependant, pourquoi n'utilisons-nous pas Chrome directement au lieu de Firefox ? De plus, lorsque j'appuie sur F12, cela n'affiche rien, cela augmente simplement le volume.
@Joycode_
10 ай бұрын
Tu as probablement le Fn lock activé, appuie sur la touche Fn avant d'appuyer sur F12 :) C'est juste un exemple, on peut également utiliser un webdriver chrome ou chromium, les options seront juste un peu différentes.
Certains sites te bloquent lorsque tu utilises Selenium, car c'est détectable (Chrome par exemple empêche de se connecter automatiquement à un compte Gmail, leboncoin t'empêche d'accéder à la moindre de ses pages, ect). Et je ne crois pas que les headers et la rotation de proxies permettent de résoudre ce problème. Alors existe-t-il une solution?
@Joycode_
2 жыл бұрын
Il y a plein d'autres méthodes de détection plus ou moins avancées, tu peux en avoir un aperçu sur pixelscan.net. Comme souvent en sécurité, c'est une question d'équilibre entre les compétences du développeur du site et celles du scraper. Il faut y aller étape par étape, essayer avant de conclure etc.
@martindupont1244
2 жыл бұрын
@@Joycode_ merci 👍
@arnaques-tuto-informatique
Жыл бұрын
@@Joycode_ salut exact mais aussi une question d'avance technologique ;) eh ouai bcp des gros site sont protégés contre le scrap...technique qui devient de plus en plus populaire depuis ma loin de 10 ans
Salut merci pour la video J'ai plusieur questions deja la première La ligne proxy_list = pd.read_html(response.text)[0] Pourquoi avoir mis[0] stp ? Deuxième question On ne risque pas une attaque man in the middle en utilisant des proxies comme utilisé dans la video ?
@Joycode_
Жыл бұрын
pd.read_html() retourne une liste de DataFrame (les tableaux présents sur la page) et [0] permet d'accéder au premier tableau (celui avec la liste de proxies). Cela dépend de la page du coup. Quant à l'attaque MitM oui c'est possible, et de manière générale c'est le cas à chaque fois qu'on utilise un intermédiaire (VPN, proxy, ...) mais pour du scraping c'est peu gênant, on veut juste récupérer des données publiques. Ne pas envoyer de mot de passe ou autre donnée sensibles dans les requêtes en revanche :)
15:07 Ils n’ont pas une API pour ça ? (Dans l’idéal c’est toujours mieux que de scrapper ahah😅)
tressssssssssssss bon .......ben j'essaye de faire un script pour les envoie d'email avec un smtp , mais quand je fini de creer le scrypte et que je le lance un autre scrypte se creer automatiquément qui est chiffrer.... je peux avoir une aide pour evité cela et envoye un masse d'email via smtp
Je souhaite utiliser Chrome comme navigateur et lorsque je spécifie des capabilities au driver créé de Chrome, python me dit que l'argument 'capabilities' n'était pas attendu... D'où vient l'erreur?
@Joycode_
2 жыл бұрын
Le driver Chrome de selenium ne fonctionne pas avec les mêmes paramètres, on utilise des options et non des capabilities. Par exemple : stackoverflow.com/questions/55582136/ddg#55582859
@ndulucalvassman2294
2 жыл бұрын
@@Joycode_ Superbe! Je vous remercie pour votre réponse rapide! Cependant, je ne trouve pas comment modifier les headers avec le driver Chrome de selenium. Faut-il également trouver la commande spécifique pour l'ajouter en argument du Chrome_Options() ou cela se fait-il autrement? Par ailleurs, est ce que si j'utilise toujours les même headers lorsque je fais du WebScrapping me rend vulnérable? ou simplement le fait de me cacher derrière une autre adresse ip (grâce au proxy) suffit amplement lorsqu'e cela est combiné aux faux headers que j'ai donné au programme?
@Joycode_
2 жыл бұрын
Tout va dépendre des mécanismes de détection mis en place par le site que tu scrapes. L'avantage du proxy c'est qu'on moins ton IP normale ne peut pas être blacklist. Après tu peux quand-même être détecté. Honnêtement je te conseille d'utiliser le Firefox driver et de mettre des headers chrome au pire. Je n'utilise pas trop le Chrome driver donc je ne sais pas si on peut facilement changer les headers.
J'ai suivi les différentes étapes et pourtant certains sites me renvoient toujours l'erreur 403. Avez vous une idée de comment faire ?
@Joycode_
8 ай бұрын
403 signifie "unauthorized" ce qui veut probablement dire que le site nécessite un login ou autre forme d'authentification
Je me tente à scrap chatGPT. Je vois que la tâche à l'air plus corriace que d'habitude. Je vais voir si grâce à ta vidéo j'arrive à passer.
@Joycode_
Жыл бұрын
Le contenu de ChatGPT est dynamique (il change en fonction de ce que tu lui demandes) donc pas vraiment éligible au scraping. Tu peux utiliser directement l'API REST de OpenAI en revanche, elle est faite pour ça.
@classique_burgouz
8 ай бұрын
Le contenu dynamique n'est pas possible à scrapper ?@@Joycode_
bonsoir grace a vos video je fait beaucoup de progres mais sa fait 3 mois je bloque pourriez vous m aider
@Joycode_
Жыл бұрын
Tu bloques sur quoi ? Pour progresser le mieux c'est de choisir un petit projet simple et de le réaliser en s'appuyant sur la documentation python, des vidéos, stackoverflow.com etc.
@tianel15
Жыл бұрын
@@Joycode_ en faite pour moi mon code est bon je scrape plusieur fiche il scrape la première j ai les infos rechercher et à partir de la deuxième la page ecrit cloudflare et la j arrive plus à rien en tout cas merci à toi de repondre
sympat tt ca mais moi j me fait detecter quand meme ...