国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

15.網(wǎng)絡爬蟲—selenium驗證碼破解

這篇具有很好參考價值的文章主要介紹了15.網(wǎng)絡爬蟲—selenium驗證碼破解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言
??????個人簡介:以山河作禮。
??????:Python領(lǐng)域新星創(chuàng)作者,CSDN實力新星認證
?????第一篇文章《1.認識網(wǎng)絡爬蟲》獲得全站熱榜第一,python領(lǐng)域熱榜第一。
?? ??第四篇文章《4.網(wǎng)絡爬蟲—Post請求(實戰(zhàn)演示)》全站熱榜第八。
?? ??第八篇文章《8.網(wǎng)絡爬蟲—正則表達式RE實戰(zhàn)》全站熱榜第十二
?? ??第十篇文章《10.網(wǎng)絡爬蟲—MongoDB詳講與實戰(zhàn)》全站熱榜第八,領(lǐng)域熱榜第二
?? ??第十三篇文章《13.網(wǎng)絡爬蟲—多進程詳講(實戰(zhàn)演示)》全站熱榜第十二
????《Python網(wǎng)絡爬蟲》專欄累計發(fā)表十四篇文章,上榜五篇。歡迎免費訂閱!歡迎大家一起學習,一起成長?。?br> ????悲索之人烈焰加身,墮落者不可饒恕。永恒燃燒的羽翼,帶我脫離凡間的沉淪。

一·selenium驗證碼破解

?? ??網(wǎng)絡爬蟲是一種自動化程序,用于從Web頁面中提取數(shù)據(jù)。然而,有些網(wǎng)站為了防止爬蟲程序抓取數(shù)據(jù),會加入一些驗證碼,使得程序無法自動化地完成數(shù)據(jù)采集任務。為了解決這個問題,我們可以使用selenium來破解驗證碼。

?? Selenium是一個開源的自動化測試工具,它可以模擬用戶在瀏覽器中的操作,包括點擊、輸入等。使用selenium可以模擬用戶手動輸入驗證碼,從而實現(xiàn)驗證碼的破解。

二·破解平臺

首先我們介紹兩個第三方破解平臺:
第一款第三方打碼平臺是 :超級鷹

幫助開發(fā)者解決圖像驗證碼的識別問題。它采用了最先進的圖像識別技術(shù),可以快速準確地識別各種形式的圖像驗證碼,如數(shù)字、字母、中文、滑動拼圖

第二款第三方平臺是 :圖靈

基于人工智能的定制化識別平臺 可用于識別包括英數(shù)類型,中文類型,滑塊類型等驗證碼,

打碼平臺超級鷹文識別

  • 超級鷹是一款第三方打碼平臺,可以幫助開發(fā)者解決圖像驗證碼的識別問題。它采用了最先進的圖像識別技術(shù),可以快速準確地識別各種形式的圖像驗證碼,如數(shù)字、字母、中文、滑動拼圖等。
  • 超級鷹提供了簡單易用的API接口,開發(fā)者只需調(diào)用接口即可將驗證碼提交給超級鷹進行識別,并獲得識別結(jié)果。此外,超級鷹還提供了多種識別方式,如手動識別、自動識別、多人協(xié)作等,可以滿足不同的識別需求。
  • 超級鷹的圖文識別功能可以識別包含文字圖片的驗證碼,比如滑動拼圖驗證碼。它可以先將驗證碼圖片拆分成多個小塊,再對每個小塊進行識別,最后將結(jié)果合并起來得到整個驗證碼的識別結(jié)果。這種識別方式可以大大提高驗證碼的識別準確率。

??1.首先我們登錄注冊,方便我們后面使用
15.網(wǎng)絡爬蟲—selenium驗證碼破解

??2.選擇我們需要的價格體系,待會也會用到
15.網(wǎng)絡爬蟲—selenium驗證碼破解
??3.Python語言Demo下載
15.網(wǎng)絡爬蟲—selenium驗證碼破解
??4.獲取軟件Key和軟件ID
15.網(wǎng)絡爬蟲—selenium驗證碼破解

15.網(wǎng)絡爬蟲—selenium驗證碼破解

基于人工智能的定制化識別平臺 —圖靈

?? ??主頁如下,包含各種驗證碼識別
15.網(wǎng)絡爬蟲—selenium驗證碼破解

?? 識別接口說明
識別接口
15.網(wǎng)絡爬蟲—selenium驗證碼破解

識別請求參數(shù)說明
15.網(wǎng)絡爬蟲—selenium驗證碼破解

識別返回結(jié)果說明
15.網(wǎng)絡爬蟲—selenium驗證碼破解
python API調(diào)用代碼

import base64
import json
import requests

# 復制以下代碼,只需填入自己的賬號密碼、待識別的圖片路徑即可。
# 關(guān)于ID:選做識別的模型ID。

def b64_api(username, password, img_path, ID):
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingcloud.com/tuling/predict", data=data_json).text)
    return result

if __name__ == "__main__":
    img_path = r"C:/Users/Administrator/Desktop/file.jpg"
    result = b64_api(username="你的賬號", password="你的密碼", img_path=img_path, ID="你選用的模型ID(8位數(shù)字)")
    print(result)

到此為止,我們認識了兩種用于破解驗證碼的平臺,我們現(xiàn)在實戰(zhàn)操作,方便大家理解學習

三·英文數(shù)字驗證碼破解

selenium破解驗證碼快捷登錄古詩文網(wǎng)

?? 我們來看一下我們的目標
15.網(wǎng)絡爬蟲—selenium驗證碼破解

??1.使用selenium自動化登錄目標網(wǎng)站

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)

url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
driver.get(url)

??2.通過行為鏈,輸入賬號密碼,因為我沒有注冊,所以隨便輸入的,不過影響不大,我們需要的是輸入正確的驗證碼。

# 賬號輸入
driver.find_element(By.ID, 'email').send_keys('xxxxx')
# 密碼輸入
driver.find_element(By.ID, 'pwd').send_keys('xxxx')

??3.然后獲取驗證碼的照片到本地,方便我們待會調(diào)用接口來破解。

img_code = driver.find_element(By.ID, 'imgCode')
img_code.screenshot('img.png')  # 保存成圖片

15.網(wǎng)絡爬蟲—selenium驗證碼破解

??4.調(diào)用接口,來破解驗證碼。

from chaojiying import Chaojiying_Client

chaojiying = Chaojiying_Client('xxxx', 'xxxxx', '96001')  # 用戶中心>>軟件ID 生成一個替換 96001
image = open('img.png', 'rb')  # 本地圖片文件路徑 來替換 a.jpg 有時WIN系統(tǒng)須要//
pic_str = (chaojiying.PostPic(image.read(), 1004)['pic_str'])
image.close()

driver.find_element(By.ID, 'code').send_keys(pic_str)

?? ??我們的目標就完成了,是不是很簡單,后期把賬號密碼換成注冊過的,就能實現(xiàn)自動登錄和驗證了

完整代碼:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)

url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
driver.get(url)

# 賬號輸入
driver.find_element(By.ID, 'email').send_keys('xxxxx')
# 密碼輸入
driver.find_element(By.ID, 'pwd').send_keys('xxxx')
# 獲取驗證碼
img_code = driver.find_element(By.ID, 'imgCode')
img_code.screenshot('img.png')  # 保存成圖片


from chaojiying import Chaojiying_Client

chaojiying = Chaojiying_Client('*****', '*****', ' 96001')  # 用戶中心>>軟件ID 生成一個替換 96001
image = open('img.png', 'rb')  # 本地圖片文件路徑 來替換 a.jpg 有時WIN系統(tǒng)須要//
pic_str = (chaojiying.PostPic(image.read(), 1004)['pic_str'])
image.close()

driver.find_element(By.ID, 'code').send_keys(pic_str)

input()

四·滑動驗證碼破解

selenium滑動驗證碼破解網(wǎng)易網(wǎng)盾測試案例

?? 我們來看一下我們的目標
15.網(wǎng)絡爬蟲—selenium驗證碼破解

??1.思路和破解英數(shù)驗證碼一樣,使用selenium自動打開網(wǎng)址,然后通過行為鏈點擊到上圖這個頁面。

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
driver.set_window_size(1100, 800)  # 將瀏覽器窗口大小設置為寬1100像素,高800像素。

url = 'https://dun.163.com/trial/sense'
driver.get(url)
print(driver.page_source)
wait = WebDriverWait(driver, 20)  # 等待20秒,有數(shù)據(jù)就進行操作,沒有就報錯
wait.until(PE((By.XPATH, '/html/body/main/div[1]/div/div[2]/div[2]/ul/li[2]'))).click()  # 點擊可疑用戶-滑動拼圖

js = f'window.scrollTo(0,{300})'
driver.execute_script(js)  # 將當前頁面滾動到垂直方向上300像素的位置。

??2.然后我們對出現(xiàn)的驗證碼進行截圖:


# 點擊驗證碼位置,方便彈出驗證碼圖框
wait.until(PE((By.XPATH,
               '/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[1]'))).click()

sleep(3)  # 休眠三秒,方便我們截圖,防止驗證碼出現(xiàn)不及時

# 截圖網(wǎng)頁
driver.save_screenshot("html.png")

# 剪切滑動部分
img = Image.open("html.png")

# 剪切驗證碼的位置   圖片的左上角和右下角 x和y軸
cropped = img.crop((563, 380, 1012, 608))

# 保存剪切的驗證碼照片
cropped.save("yzm.png")

15.網(wǎng)絡爬蟲—selenium驗證碼破解

15.網(wǎng)絡爬蟲—selenium驗證碼破解
15.網(wǎng)絡爬蟲—selenium驗證碼破解

15.網(wǎng)絡爬蟲—selenium驗證碼破解

??3.調(diào)用ApI接口對截取的驗證碼進行識別


# api接口

def b64_api(username, password, img_path, ID):  # 賬戶  密碼  照片 ID
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingtech.xyz/tuling/predict", data=data_json).text)
    return result

15.網(wǎng)絡爬蟲—selenium驗證碼破解

??4.selenium 滑動線性 更加模擬人的行為進行點擊

# selenium 滑動線性  更加模擬人去操作
def get_move_track(gap):
    track = []  # 移動軌跡
    current = 0  # 當前位移
    # 減速閾值
    mid = gap * 4 / 5  # 前4/5段加速 后1/5段減速
    t = 0.2  # 計算間隔
    v = 0  # 初速度
    while current < gap:
        if current < mid:
            a = 5  # 加速度為+5
        else:
            a = -5  # 加速度為-5
        v0 = v  # 初速度v0
        v = v0 + a * t  # 當前速度
        move = v0 * t + 1 / 2 * a * t * t  # 移動距離
        current += move  # 當前位移
        track.append(round(move))  # 加入軌跡
    return track

??5.講破解出的數(shù)據(jù)交給代碼,讓他幫助我們輸入并且通過行為鏈來拖動滑塊填充拼圖,完成驗證碼的驗證。


x = int(result['data']['滑塊']['X坐標值'])
q = int(result['data']['缺口']['X坐標值'])
ranges = int((q - x) * 0.68)

move_track = get_move_track(ranges)  # 將結(jié)果交給滑動線性函數(shù)

# 滑動代碼

element = wait.until(PE((By.CLASS_NAME, 'yidun_jigsaw')))  # 滑塊

ActionChains(driver).click_and_hold(element).perform()  # 通過行為鏈,按住它,然后執(zhí)行
for i in move_track:  # 循環(huán)每次滑動的距離
    # 執(zhí)行移動
    ActionChains(driver).move_by_offset(i, 0).perform()
ActionChains(driver).release().perform()  # 松開按鍵,完成滑動

運行結(jié)果:

智能無感知驗證碼_智能驗證碼_驗證碼API_在線體驗

完整代碼:

import base64
import json
from time import sleep
import requests
from PIL import Image  # pillow
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import presence_of_element_located as PE
from selenium.webdriver.support.ui import WebDriverWait

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
driver.set_window_size(1100, 800)  # 將瀏覽器窗口大小設置為寬1100像素,高800像素。

url = 'https://dun.163.com/trial/sense'
driver.get(url)
print(driver.page_source)
wait = WebDriverWait(driver, 20)  # 等待20秒,有數(shù)據(jù)就進行操作,沒有就報錯
wait.until(PE((By.XPATH, '/html/body/main/div[1]/div/div[2]/div[2]/ul/li[2]'))).click()  # 點擊可疑用戶-滑動拼圖

js = f'window.scrollTo(0,{300})'
driver.execute_script(js)  # 將當前頁面滾動到垂直方向上300像素的位置。

# 點擊驗證碼位置,方便彈出驗證碼圖框
wait.until(PE((By.XPATH,
               '/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[1]'))).click()

sleep(3)  # 休眠三秒,方便我們截圖,防止驗證碼出現(xiàn)不及時

# 截圖網(wǎng)頁
driver.save_screenshot("html.png")

# 剪切滑動部分
img = Image.open("html.png")

# 剪切驗證碼的位置   圖片的左上角和右下角 x和y軸
cropped = img.crop((563, 380, 1012, 608))

# 保存剪切的驗證碼照片
cropped.save("yzm.png")


# 調(diào)用api接口對照片驗證碼進行識別

def b64_api(username, password, img_path, ID):  # 賬戶  密碼  照片 ID
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingtech.xyz/tuling/predict", data=data_json).text)
    return result


# 78915616

result = b64_api('****', '*****', "yzm.png", '78915616')

# 輸出滑塊和缺口的位置參數(shù)
print(result)


# selenium 滑動線性  更加模擬人去操作
def get_move_track(gap):
    track = []  # 移動軌跡
    current = 0  # 當前位移
    # 減速閾值
    mid = gap * 4 / 5  # 前4/5段加速 后1/5段減速
    t = 0.2  # 計算間隔
    v = 0  # 初速度
    while current < gap:
        if current < mid:
            a = 5  # 加速度為+5
        else:
            a = -5  # 加速度為-5
        v0 = v  # 初速度v0
        v = v0 + a * t  # 當前速度
        move = v0 * t + 1 / 2 * a * t * t  # 移動距離
        current += move  # 當前位移
        track.append(round(move))  # 加入軌跡
    return track


x = int(result['data']['滑塊']['X坐標值'])
q = int(result['data']['缺口']['X坐標值'])
ranges = int((q - x) * 0.68)

move_track = get_move_track(ranges)  # 將結(jié)果交給滑動線性函數(shù)

# 滑動代碼

element = wait.until(PE((By.CLASS_NAME, 'yidun_jigsaw')))  # 滑塊

ActionChains(driver).click_and_hold(element).perform()  # 通過行為鏈,按住它,然后執(zhí)行
for i in move_track:  # 循環(huán)每次滑動的距離
    # 執(zhí)行移動
    ActionChains(driver).move_by_offset(i, 0).perform()
ActionChains(driver).release().perform()  # 松開按鍵,完成滑動

input()

五·總結(jié)

????使用selenium破解驗證碼需要模擬用戶操作,包括手動輸入驗證碼和提交表單等。驗證碼的設計越來越復雜,破解難度也越來越大。因此,在使用selenium破解驗證碼時,需要根據(jù)具體情況選擇合適的方法

六·后記

????本專欄所有文章是博主學習筆記,僅供學習使用,爬蟲只是一種技術(shù),希望學習過的人能正確使用它。
博主也會定時一周三更爬蟲相關(guān)技術(shù)更大家系統(tǒng)學習,如有問題,可以私信我,沒有回,那我可能在上課或者睡覺,寫作不易,感謝大家的支持?。??????
文章來源地址http://www.zghlxwxcb.cn/news/detail-415066.html

到了這里,關(guān)于15.網(wǎng)絡爬蟲—selenium驗證碼破解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • java爬蟲破解滑塊驗證碼

    java爬蟲破解滑塊驗證碼

    使用技術(shù):java+Selenium 廢話: ????????有爬蟲,自然就有反爬蟲,就像病毒和殺毒軟件一樣,有攻就有防,兩者彼此推進發(fā)展。而目前最流行的反爬技術(shù)驗證碼,為了防止爬蟲自動注冊,批量生成垃圾賬號,幾乎所有網(wǎng)站的注冊頁面都會用到驗證碼技術(shù)。其實驗證碼的英文

    2023年04月09日
    瀏覽(93)
  • Selenium破解滑動驗證碼的原理及解決思路

    ?? 視頻學習: 文末有免費的配套視頻可觀看 ??? 點擊文末小卡片 ,免費獲取軟件測試全套資料,資料在手,漲薪更快 ?1、獲取頁面元素信息: 使用Selenium打開目標網(wǎng)頁,并通過相關(guān)方法獲取滑塊、背景圖等元素的位置和屬性信息??梢允褂肧elenium提供的定位方法(如xpa

    2024年02月20日
    瀏覽(94)
  • Python如何用爬蟲破解滑動驗證碼?這五步簡單易用

    Python如何用爬蟲破解滑動驗證碼?這五步簡單易用

    在使用python爬蟲抓取數(shù)據(jù)的時候經(jīng)常會遇到網(wǎng)站為了防止機器人登錄而設置了驗證,除了最基本的字符驗證之外還有滑塊驗證、圖片驗證、順序驗證等等驗證方式。那我們今天就來講一下python如何用爬蟲破解滑動驗證碼,一起來看看吧。 1.讀取圖片:在命令行控制臺輸入pip

    2024年02月14日
    瀏覽(92)
  • 使用Selenium破解滑動驗證碼的原理及解決思路

    使用Selenium破解滑動驗證碼的原理及解決思路

    1、獲取頁面元素信息: 使用Selenium打開目標網(wǎng)頁,并通過相關(guān)方法獲取滑塊、背景圖等元素的位置和屬性信息??梢允褂肧elenium提供的定位方法(如xpath、CSS選擇器等)來找到這些元素。 可以使用find_element_by_xpath或find_element_by_css_selector等方法來獲取滑塊和背景圖元素的位置和

    2024年02月09日
    瀏覽(104)
  • Cloudflare5s盾破解|爬蟲自動驗證|解決方案

    一、什么是Cloudflare5s盾 Cloudflare是一個網(wǎng)站加速和安全服務提供商。Cloudflare??5s盾是指網(wǎng)站防御模式,它可以防止惡意流量和攻擊,如DDoS、SQL注入、XSS等,保護網(wǎng)站免受惡意攻擊和流量泛濫帶來的服務中斷或數(shù)據(jù)泄漏等問題。此外,Cloudflare??5s盾還可以通過Web應用程序防火

    2024年02月12日
    瀏覽(87)
  • selenium破解滑塊驗證碼自動查詢+獲取后續(xù)表單數(shù)據(jù)

    一、裝載好chromedriver之后,運行命令行 \\\"chrome.exe\\\"(路徑) --remote-debugging-port=9222 打開谷歌瀏覽器。 二、使用selenium打開網(wǎng)頁: ?三、獲取輸入框批量輸入數(shù)據(jù),并破解驗證碼: 使用 driver.find_element_by_xpath 獲取element時,xpath可通過瀏覽器打開網(wǎng)站,使用檢查功能,找到element所

    2024年02月12日
    瀏覽(97)
  • python selenium模塊聯(lián)合帶帶弟弟破解滑塊驗證碼

    Python 使用 Selenium 模塊模擬用戶操作,滑動滑塊來破解驗證碼

    2024年04月14日
    瀏覽(231)
  • Selenium滑動驗證碼破解(缺口對應卻無法通過,需要做鼠標軌跡模擬)

    平臺: 所涉及內(nèi)容: 滑動驗證碼破解原理: 解決場景: 正常情況下,滑動驗證碼都是在canvas畫出來的(殘圖一般是JS通過對后臺返回的完整圖片剪裁而來),在網(wǎng)頁代碼中可以找到對應信息 殘圖直接畫在Canvas上,因此需要通過js代碼將其導出,獲取圖片的base64數(shù)據(jù)(錯存在直

    2024年02月12日
    瀏覽(408)
  • 2022-爬蟲-Selenium-百度安全驗證

    2022-爬蟲-Selenium-百度安全驗證

    新的一年剛開始,百度又有更新了。今天早上剛起床,開始了今天的學習之路。返現(xiàn)了一個有趣的事,和大家分享解決一下。 Chrome驅(qū)動打開百度時發(fā)現(xiàn)需要進行安全驗證。而且看到驗證的方式還特別新奇,如下圖需要圖片方正。 解決方法:可以通過隱藏WebDriver提示條和自動

    2023年04月08日
    瀏覽(91)
  • 爬蟲日常-selenium登錄12306,繞過驗證

    爬蟲日常-selenium登錄12306,繞過驗證

    hello兄弟們,這里是無聊的網(wǎng)友。愉快的周末過去了,歡迎回到學習頻道。書接上文,我們說到了再用selenium登錄12306時遇到了滑塊驗證的問題。當前的網(wǎng)站幾乎每家都會在登錄模塊添加一個認證,來規(guī)避各種爬蟲,而我們則不斷的去想辦法繞過這些驗證模塊。目前一些簡單的

    2024年02月07日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包