Today, you’ll learn how to use Python 3 and Selenium to bypass CAPTCHA on a website. The full source code of this project is given below.
pip install selenium
code.py
from selenium import webdriver import time dataset = {' * * * * * ******* ': 'J', '******* * * * * * *': 'L', '******** * ** * ** * ** * ** * * ** ** ': 'B', '* * * **** * * * ': 'Y', '* * * ******** * * ': 'T', ' ***** * ** ** ** ** * * * ': 'C', '******** * ** * ** * ** ** ** *': 'E', '******** ** ** ** ** * ***** ': 'D', '* ** ** ********* ** ** *': 'I', ' ***** * ** ** ** ** * ***** ': 'O', '******* * * * * * *******': 'M', '******* * * * * * *******': 'N', '******** * * * * * * * * ': 'F', ' ** * * * ** * ** * ** * ** * * * ** ': 'S', ' ***** * ** ** ** * ** * **** *': 'Q', '******* * * * * * * * * * * *': 'K', ' ** ** ** * * * ** * ** **': 'A', '****** * * * * ******* ': 'U', '******* * * * * * *******': 'H', '** ** ** * ** ** ** ': 'V', '* ** *** * ** * ** * *** ** *': 'Z', '******** * * * * * * * * * ** ': 'P', '* * * * * * * * * * * * *': 'X', ' ***** * ** ** ** * ** * * * ** ': 'G', '******** * * * * * * ** * * * ** *': 'R', '******* * * * * * *******': 'W'} def group_captcha_string(word_pos): captcha_string = '' for i in range(len(word_pos[0])): temp_list = [] temp_string = '' for j in range(len(word_pos)): val = word_pos[j][i] temp_string += val if val.strip(): temp_list.append(val) if temp_list: captcha_string += temp_string else: captcha_string += 'sp' return captcha_string.split("spsp") # create client client = webdriver.Chrome() client.get("http://keith-wood.name/realPerson.html") time.sleep(3) # indexing text _get = lambda _in: {index: val for index, val in enumerate(_in)} # get text from html tag captcha = client.find_element_by_css_selector('form [class="realperson-text"]').text.split('\n') word_pos = list(map(_get, captcha)) # group text text = group_captcha_string(word_pos) # get text(test) captcha_text = ''.join(list(map(lambda x: dataset[x] if x else '', text))) print("captcha:", captcha_text)