
Chromedriver Selenium personnalisé | Zéro configuration | Passe tous les systèmes anti-bots (comme Distil / Imperva/ Datadadome / CloudFlare IUAM)
https://github.com/ultrafunkamsterdam/undetected-chromedriver
Correctif Selenium Chromedriver optimisé qui ne déclenche pas les services anti-bot comme Distill Network / Imperva / DataDome / Botprotect.io Télécharge automatiquement le binaire du pilote et le corrige.
pip install undetected-chromedriver
ou , si vous vous sentez aventureux, installez directement via github```
pip install git+https://www.github.com/ultrafunkamsterdam/undetected-chromedriver@master # replace @master with @branchname for other branches
Je vais mettre des limites sur le suivi des problèmes. Il a été abusé trop longtemps.
Des bonnes nouvelles ?
Oui, j'ai ouvert Undetected-Discussions ce qui, je pense, nous aidera mieux à long terme.
CE PACKAGE NE CACHE PAS, et je le répète NE CACHE PAS votre adresse IP. Par conséquent, lorsque vous exécutez depuis un centre de données (même les plus petits), il y a de fortes chances que vous ne passiez pas ! De plus, si votre réputation IP à la maison est faible, vous ne passerez pas !
Exécuter le code suivant depuis chez soi, et depuis un centre de données.```python import undetected_chromedriver as uc driver = uc.Chrome(headless=True,use_subprocess=False) driver.get('https://nowsecure.nl') driver.save_screenshot('nowsecure.png')
<div style="display:flex;flex-direction:row">
<img src="https://assets.kitploit.com/production/public/readmes/50956/c1bde1e3621f106c2504cf4ecb9cc9015b23340c7a9bd5f20364c27016b2dd40/4f02747809c3b183c8af8238f6858540057402adfe0f26d4fa9d646091fa5781-display-v1.webp" width="720"/>
<img src="https://assets.kitploit.com/production/public/readmes/50956/ac44f4c3d408a07f4a0b96b2eb37ecc58f3a9711f32b31a642c27e96ad2ab767/c94f4da9c540b7890c9350605f085bddc730ed40073c886ff94a2475bdfe806a-display-v1.webp" width="720"/>
</div>
<!--  -->
<!--  -->
## 3.5.0 ##
- selenium 4.10 a causé quelques problèmes. 3.5.0 est compatible et impose selenium 4.9 ou plus. Je ne peux plus supporter les versions <4.9.
- Suppression de certains kwargs du constructeur : service_args, service_creationflags, service_log_path.
- ajout de la fonction génératrice find_elements_recursive. C'est plus une fonction de commodité car de nombreux sites semblent servir un contenu différent selon les frames, ce qui rend difficile l'utilisation de find_elements.
## 3.4.5 ##
- Quelle semaine. Les récentes avancées des algorithmes de détection d'automatisation m'avaient eu (du moins je le pensais) avec la 3.4.0, mais apparemment, sur certains OS, cela provoquait une erreur lors de l'interaction avec les éléments. J'ai dû revenir en arrière en utilisant une autre méthode, corriger des bugs, et finalement j'ai encore réussi à tenir l'idée initiale (+ correction de bugs).
- La mise à jour vers chrome 110 a réservé une autre surprise, cette fois pour les utilisateurs de HEADLESS.
- bien que le mode headless ne soit pas officiellement pris en charge, je l'ai patché !
- heureux d'annoncer qu'il est désormais AUSSI INDÉTECTABLE (mais toujours non pris en charge ;))
- remerciements particuliers à [@mdmintz](https://github.com/mdmintz) et [@abdulzain6](https://github.com/abdulzain6)
- merci également à [@sebdelsol](https://github.com/sebdelsol) pour son aide tout au long de la section des problèmes, entièrement bénévole, tu dois être fou :)
### 3.4.0 ###
**Grosse mise à jour ! soyez prudent car elle -potentiellement- pourrait casser votre code.**
* réécrit le mécanisme anti-détection : au lieu de supprimer et renommer les variables, on les conserve simplement, mais on empêche leur injection en premier lieu. Cela nous protégera de la détection au moins dans un avenir proche.
* réécrit le nommage des fichiers, pour éviter de se retrouver avec 1000 {randomstring}_chromedriver.exe ; à la place, il s'appelle simplement undetected_chromedriver.exe
* nettoyage : suppression des fichiers compat,v2 et du dossier tests
### 3.2.0 ###
* ajout d'un exemple contenant du code webdriver typique, des réponses aux questions fréquemment posées, des pièges + quelques astuces pour éviter
le besoin de multithreading.
### [>>>> exemple de code ici <<<<](https://github.com/ultrafunkamsterdam/undetected-chromedriver/blob/master/example/example.py)
* ajout de la méthode WebElement.click_safe(), que vous pouvez essayer si vous êtes détecté après avoir cliqué sur un lien. Ce n'est pas garanti de fonctionner.
* ajout de WebElement.children(self, tag=None, recursive=False)
pour obtenir/trouver facilement les nœuds enfants. exemple :
```
body = driver.find_element('tag name', 'body')
# get the 6th child (any tag) of body, and grab all img's within (recursive).
images = body.children()[6].children('img', True)
srcs = list(map(lambda _:_.attrs.get('src'), images))
```
* ajout d'exemple.py où je peux pointer les gens lorsqu'ils posent des questions idiotes
(non, en fait c'est plutôt cool, tout le monde devrait le voir)
* ajout de la prise en charge de la plateforme lambda
* ajout de la prise en charge de x86_32
* ajout de la prise en charge des systèmes signalés comme linux2
* un peu de refactoring
### 3.1.6 ###
### toujours aussi solide ###
- use_subprocess est maintenant True par défaut. trop de gens ne comprennent pas le multiprocessing et __name__ == '__main__', et après tests,
cela ne semble plus faire de différence avec chrome 104+
- ajout de no_sandbox, qui est True par défaut, et ce sans la barre ennuyeuse « vous utilisez une ligne de commande non sécurisée ... ».
- mise à jour de l'[image Docker](https://hub.docker.com/r/ultrafunk/undetected-chromedriver). vous pouvez maintenant utiliser vnc ou rdp dans votre conteneur pour voir
la fenêtre réelle du navigateur
[](https://i.imgur.com/W7vriN9.mp4)
- bien sûr, le mode « regular » fonctionne aussi
[](https://i.imgur.com/2qSNyuK.mp4)
### 3.1.0 ###
**cette version `pourrait` casser votre code, testez avant de mettre à jour !**
- **ajout d'une nouvelle logique anti-détection !**