
Chromedriver Selenium personalizzato | Zero-Config | Supera TUTTI i sistemi di mitigazione bot (come Distil / Imperva/ Datadadome / CloudFlare IUAM)
https://github.com/ultrafunkamsterdam/undetected-chromedriver
Patch ottimizzata per Selenium Chromedriver che non attiva i servizi anti-bot come Distill Network / Imperva / DataDome / Botprotect.io Scarica automaticamente il binario del driver e lo applica come patch.
pip install undetected-chromedriver
oppure , se ti senti avventuroso, installalo direttamente tramite github```
pip install git+https://www.github.com/ultrafunkamsterdam/undetected-chromedriver@master # replace @master with @branchname for other branches
Metterò dei limiti al tracker dei problemi. È stato abusato troppo a lungo.
buone notizie?
Sì, ho aperto Undetected-Discussions che penso ci aiuterà meglio a lungo termine.
QUESTO PACCHETTO NON nasconde, e ripeto NON nasconde il tuo indirizzo IP, quindi quando esegui da un datacenter (anche quelli più piccoli), è molto probabile che non supererai! Inoltre, se la tua reputazione IP a casa è bassa, non supererai!
Eseguendo il seguente codice da casa e da un datacenter.```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 ha causato alcuni problemi. La 3.5.0 è compatibile e ha selenium 4.9 o superiore bloccato. Non posso più supportare versioni <4.9.
- Rimossi alcuni kwargs dal costruttore: service_args, service_creationflags, service_log_path.
- aggiunta la funzione generatore find_elements_recursive, che è più una funzione di comodità visto che molti siti web sembrano servire contenuti diversi da frame diversi, rendendo difficile l'uso di find_elements
## 3.4.5 ##
- Che settimana. Avevo (così pensavo) superato i recenti progressi negli algoritmi di rilevamento dell'automazione con la 3.4.0, ma a quanto pare, per alcuni sistemi operativi questo causava un errore durante l'interazione con gli elementi. Ho dovuto tornare indietro usando un metodo diverso, correggere bug, e alla fine sono comunque riuscito a mantenere l'idea iniziale (+ correzione di bug).
- L'aggiornamento a chrome 110 ha causato un'altra sorpresa, questa volta per gli utenti HEADLESS.
- anche se headless non è supportato ufficialmente, l'ho patchato!
- felice di annunciare che ORA È ANCHE NON RILEVATO (ma ancora non supportato ;))
- un ringraziamento speciale va a [@mdmintz](https://github.com/mdmintz) e [@abdulzain6](https://github.com/abdulzain6)
- e un ringraziamento speciale anche a [@sebdelsol](https://github.com/sebdelsol) per il suo aiuto nella sezione issues, del tutto volontario, devi essere matto :)
### 3.4.0 ###
**Grande aggiornamento! fai attenzione perché -potenzialmente- potrebbe rompere il tuo codice.**
* riscritto il meccanismo anti-rilevamento: invece di rimuovere e rinominare le variabili, le manteniamo semplicemente, ma impediamo che vengano iniettate in primo luogo. Questo ci manterrà al sicuro dal rilevamento almeno nel prossimo futuro.
* riscritta la denominazione dei file, per evitare di ritrovarsi con 1000 file {randomstring}_chromedriver.exe; invece si chiama semplicemente undetected_chromedriver.exe
* pulizia: rimossi i file compat, v2 e la cartella tests
### 3.2.0 ###
* aggiunto un esempio contenente del codice webdriver tipico, risposte a domande comuni, insidie + mostra alcuni trucchi per eliminare la necessità del multithreading.
### [>>>> codice di esempio qui <<<<](https://github.com/ultrafunkamsterdam/undetected-chromedriver/blob/master/example/example.py)
* aggiunto il metodo WebElement.click_safe(), che puoi provare nel caso venissi rilevato dopo aver cliccato un link. Non è garantito che funzioni.
* aggiunto WebElement.children(self, tag=None, recursive=False)
per ottenere/trovare facilmente i nodi figli. esempio:
```
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))
```
* aggiunto example.py a cui posso indirizzare le persone quando fanno domande stupide
(no, in realtà è piuttosto figo, tutti dovrebbero vederlo)
* aggiunto supporto per la piattaforma lambda
* aggiunto supporto per x86_32
* aggiunto supporto per sistemi che si identificano come linux2
* un po' di refactoring
### 3.1.6 ###
### ancora passa a pieni voti ###
- use_subprocess ora è True di default. troppe persone non capiscono multiprocessing e __name__ == '__main__', e dopo i test, sembra che non faccia più differenza in chrome 104+
- aggiunto no_sandbox, che è True di default, e questo senza la fastidiosa barra "you are using unsecure command line ...".
- aggiornata l'[immagine Docker](https://hub.docker.com/r/ultrafunk/undetected-chromedriver). ora puoi connetterti via vnc o rdp al tuo container per vedere la finestra del browser reale
[](https://i.imgur.com/W7vriN9.mp4)
- ovviamente, anche la modalità "normale" funziona
[](https://i.imgur.com/2qSNyuK.mp4)
### 3.1.0 ###
**questa versione `potrebbe` rompere il tuo codice, testa prima di aggiornare!**
- **aggiunta nuova logica anti-rilevamento!**
- v2 è diventato il modulo principale, quindi non c'è più bisogno di riferimenti a v2. questo significa che ora puoi semplicemente usare: ```python
import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get('https://nowsecure.nl')
per la compatibilità con le versioni precedenti, v2 non è stata rimossa, ma è stata resa un alias del modulo principale.