最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?網(wǎng)易易盾滑塊驗證功能的實現(xiàn)

 更新時間:2022年05月11日 08:30:32   作者:拉燈的小手  
這篇文章主要介紹了Python?網(wǎng)易易盾滑塊驗證,主要是借助之前寫阿里云盾滑塊和極驗滑塊的經(jīng)驗寫的本文,通過使用selenium請求url,并觸發(fā)滑塊驗證,需要的朋友可以參考下

記一次 網(wǎng)易易盾滑塊驗證分析并通過

操作環(huán)境

  • win10 、 mac
  • Python3.9
  • selenium、PIL、numpy、scipy、matplotlib

分析

網(wǎng)易易盾滑塊驗證,就長下面這個樣子

具體驗證原理有興趣的可自行查詢官方文檔:網(wǎng)易易盾開發(fā)文檔

話不多少,借助之前寫阿里云盾滑塊和極驗滑塊的經(jīng)驗,直接上代碼,詳細可參考:[python3 破解 geetest(極驗)的滑塊驗證碼功能]極驗滑塊驗證

解決方案

使用selenium請求url,并觸發(fā)滑塊驗證

def open(self):
    # 初始化瀏覽器
    wait = WebDriverWait(self.driver, 5)
     # 點擊對應標簽
     self.driver.get(cfg.TEST_URL)
     button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.HD_SELECOTR)))
     button.click()
     self.tc_item = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.TC_SELECOTR)))
     self.tc_item.click()

     # 得到背景和滑塊的item, 以及滑動按鈕
     time.sleep(2)
     self.background_item = wait.until(
         EC.presence_of_element_located((By.CSS_SELECTOR, cfg.BG_SELECOTR))
     )
     self.slider_item = wait.until(
         EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HK_SELECOTR))
     )
     self.slider_btn = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HD_BTN)))
     self.offset = cfg.offset
     self.background_path = cfg.background_path
     self.slider_path = cfg.slider_path

獲取驗證圖片并計算滑塊距離

def get_images(self):
   """
   獲取驗證碼圖片
   :return: 圖片的location信息
   """
    url = selenium_item.get_attribute("src")
    if url is not None:
        response = requests.get(url)
        with open(path, "wb") as f:
            f.write(response.content)
        img = Image.open(path).resize(size)
        img.save(path)
    else:
        class_name = selenium_item.get_attribute("class")
        js_cmd = (
            'return document.getElementsByClassName("%s")[0].toDataURL("image/png");'
            % class_name
        )
        im_info = self.driver.execute_script(js_cmd)
        im_base64 = im_info.split(",")[1] 
        im_bytes = base64.b64decode(im_base64)
        with open(path, "wb") as f:
            f.write(im_bytes)
        img = Image.open(path).resize(size)
        img.save(path)

def compute_gap(self, array):
   """
   計算缺口偏移
   """
   grad = np.array(array > 0)
    h, w = grad.shape
    # img_show(grad)
    rows_sum = np.sum(grad, axis=1)
    cols_sum = np.sum(grad, axis=0)
    left, top, bottom = 0, 0, h
    # get the top index
    p = np.max(rows_sum) * 0.5
    for i in range(h):
        if rows_sum[i] > p:
            top = i
            break
    for i in range(h - 1, -1, -1):
        if rows_sum[i] > p:
            bottom = i
            break
    p = np.max(cols_sum) * 0.5
    for i in range(w):
        if cols_sum[i] > p:
            left = i
            break
    return top, bottom + 1, left

生成滑動軌跡

def get_tracks(distance):
    v = random.randint(0, 2)
    t = 1
    tracks = []
    cur = 0
    mid = distance * 0.8
    while cur < distance:
        if cur < mid:
            a = random.randint(2, 4)
        else:
            a = -random.randint(3, 5)
        s = v * t + 0.5 * a * t ** 2
        cur += s
        v = v + a * t
        tracks.append(round(s))
    tracks.append(distance - sum(tracks))
    return tracks

滑動模塊

def move_to_gap(self, track):
     """滑動滑塊"""
     print('第一步,點擊滑動按鈕')
     slider = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button')))
     ActionChains(self.driver).click_and_hold(slider).perform()
     time.sleep(1)
     print('第二步,拖動元素')
     for track in track:
         ActionChains(self.driver).move_by_offset(xoffset=track, yoffset=0).perform()  # 鼠標移動到距離當前位置(x,y)
         time.sleep(0.0001)

效果

資源下載

https://download.csdn.net/download/qq_38154948/85343666

到此這篇關(guān)于Python 網(wǎng)易易盾滑塊驗證功能的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python 易盾滑塊驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)代碼統(tǒng)計器

    python實現(xiàn)代碼統(tǒng)計器

    這篇文章主要為大家詳細介紹了python實現(xiàn)代碼統(tǒng)計器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Python3.5裝飾器原理及應用實例詳解

    Python3.5裝飾器原理及應用實例詳解

    這篇文章主要介紹了Python3.5裝飾器原理及應用,結(jié)合具體實例形式詳細分析了Python3.5裝飾器的概念、原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-04-04
  • 使用Pytorch來擬合函數(shù)方式

    使用Pytorch來擬合函數(shù)方式

    今天小編就為大家分享一篇使用Pytorch來擬合函數(shù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 基于sklearn實現(xiàn)Bagging算法(python)

    基于sklearn實現(xiàn)Bagging算法(python)

    這篇文章主要為大家詳細介紹了基于sklearn實現(xiàn)Bagging算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    這篇文章主要介紹了flask的orm框架SQLAlchemy查詢實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python如何把字典寫入到CSV文件的方法示例

    Python如何把字典寫入到CSV文件的方法示例

    這篇文章主要介紹了Python如何把字典寫入到CSV文件的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 深入了解Python的異常處理機制

    深入了解Python的異常處理機制

    這篇文章主要為大家介紹了Python的異常處理機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python?Pandas中append方法舉例詳解

    Python?Pandas中append方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于Python?Pandas中append方法的相關(guān)資料,在Pandas中append()方法用于將一個或多個DataFrame或Series添加到DataFrame中,需要的朋友可以參考下
    2023-12-12
  • 學懂Python字符編碼避免亂碼陷阱

    學懂Python字符編碼避免亂碼陷阱

    在Python編程中,處理字符編碼和亂碼問題是一個常見的挑戰(zhàn),特別是在處理文本數(shù)據(jù)、文件輸入/輸出和網(wǎng)絡通信時,可能會遇到各種字符編碼問題,本文章將深入探討Python中的亂碼問題,解釋其原理,并提供解決辦法,以確保你的應用程序能夠正確處理各種編碼情況
    2023-12-12
  • 基于Python的微信機器人開發(fā) 微信登錄和獲取好友列表實現(xiàn)解析

    基于Python的微信機器人開發(fā) 微信登錄和獲取好友列表實現(xiàn)解析

    這篇文章主要介紹了Python微信機器人開發(fā) 微信登錄和獲取好友列表實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08

最新評論

夏津县| 马鞍山市| 延寿县| 阿图什市| 金阳县| 海阳市| 龙山县| 芦山县| 耒阳市| 水城县| 兴仁县| 仲巴县| 广河县| 电白县| 平阴县| 台湾省| 桃源县| 塔河县| 修文县| 资兴市| 涡阳县| 白城市| 环江| 太白县| 迭部县| 义乌市| 久治县| 湘阴县| 乌鲁木齐县| 阿巴嘎旗| 平利县| 巨鹿县| 潮州市| 东阳市| 大悟县| 壤塘县| 阿拉尔市| 敦化市| 遂平县| 宜兰县| 牙克石市|