Python 點(diǎn)擊指定位置驗(yàn)證碼破解的實(shí)現(xiàn)代碼
思路:
創(chuàng)建瀏覽器驅(qū)動(dòng)對(duì)象
加載登錄頁(yè)面
等待頁(yè)面加載完畢
切換到用戶名和密碼登錄模式
輸入手機(jī)號(hào), 注意此處需要等待并獲取輸入框
輸入密碼
點(diǎn)擊驗(yàn)證按鈕
獲取彈出驗(yàn)證圖片
使用超級(jí)鷹打碼平臺(tái)識(shí)別圖形的坐標(biāo)
獲取到坐標(biāo)信息, x,y坐標(biāo)分別除以2; 由于電腦分辨率太過(guò)了, 是原來(lái)的兩倍, 如果是普通分辨率可以除以2,直接用就可以了.
把鼠標(biāo)移動(dòng)到, 坐標(biāo)點(diǎn)的位置進(jìn)行點(diǎn)擊
點(diǎn)擊登錄按鈕
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver import ActionChains import time # 導(dǎo)入超級(jí)鷹 from chaojiying import chaojiying #根據(jù)系統(tǒng),可能截圖不成功,需要使用無(wú)頭瀏覽,mac系統(tǒng)可以不設(shè)置 options=webdriver.ChromeOptions() options.headless=True driver=webdriver.Chrome(options=potions) driver.get('http://www.zhaopingou.com/signin') driver.find_element_by_class_name('li02').click() wait=WebDriverWait(driver,20,0.5) # 賬號(hào)登錄 login_phone=wait.until(EC.visibility_of_element_located((By.ID,'pwd_login_phone'))) login_phone.send_keys('17724035140') # 密碼 driver.find_element_by_id('form_login_password').send_keys('961831740hzll') # 點(diǎn)擊獲取圖片 captcha = wait.until(EC.visibility_of_element_located((By.XPATH, '//div[@class="phone_login_pwd"]//iframe[starts-with(@id, "captcha_widget")]'))) captcha.click() # 點(diǎn)擊 # 保存圖片(可以不保存) captcha_element = wait.until(EC.visibility_of_element_located((By.XPATH, '//body[@class="graybc"]//iframe[starts-with(@id, "captcha_frame")]'))) captcha_element.screenshot('zhaopingou.png') # 將圖片轉(zhuǎn)換為二進(jìn)制 bytes_img=captcha_element.screenshot_as_png # print(bytes_img) result=chaojiying.post_pic(bytes_img,'9101') x,y=result['pic_str'].split(',') print(x,y) x=int(x) y=int(y) # ActionChains(driver).move_to_element_with_offset(bytes_img,x,y).click().perform() ActionChains(driver).move_to_element_with_offset(captcha_element, x, y).click().perform() time.sleep(2) driver.find_element_by_id('free_login_btn').click() print(driver.window_handles) driver.switch_to.window(driver.window_handles[0]) # time.sleep(5) driver.quit()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python簡(jiǎn)單進(jìn)程鎖代碼實(shí)例
這篇文章主要介紹了Python簡(jiǎn)單進(jìn)程鎖代碼實(shí)例,本文講解了線程和進(jìn)程的相關(guān)知識(shí),然后給出了Python的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04如何使用七牛Python SDK寫一個(gè)同步腳本及使用教程
七牛云存儲(chǔ)的 Python 語(yǔ)言版本 SDK(本文以下稱 Python-SDK)是對(duì)七牛云存儲(chǔ)API協(xié)議的一層封裝,以提供一套對(duì)于 Python 開(kāi)發(fā)者而言簡(jiǎn)單易用的開(kāi)發(fā)工具本篇文章給大家介紹如何使用七牛Python SDK寫一個(gè)同步腳本及使用及使用教程,需要的朋友可以參考下2015-08-08Django中prefetch_related()函數(shù)優(yōu)化實(shí)戰(zhàn)指南
我們可以利用Django框架中select_related和prefetch_related函數(shù)對(duì)數(shù)據(jù)庫(kù)查詢優(yōu)化,這篇文章主要給大家介紹了關(guān)于Django中prefetch_related()函數(shù)優(yōu)化的相關(guān)資料,需要的朋友可以參考下2022-11-11Python自定義scrapy中間模塊避免重復(fù)采集的方法
這篇文章主要介紹了Python自定義scrapy中間模塊避免重復(fù)采集的方法,實(shí)例分析了Python實(shí)現(xiàn)采集的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Python Django Cookie 簡(jiǎn)單用法解析
這篇文章主要介紹了Python Django Cookie 簡(jiǎn)單用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08