日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

開頭語:
除非是很簡單的參數能夠解決滑塊問題或者追求效率的業務,否則的話,我還是會selenium來解決,并且接下來的驗證碼模式的話不需要使用到原圖進行比較!!我發現很多網站都是基于比較原圖,發現缺口的方式來獲取坐標,而我有不同的小思路。并且該滑塊驗證碼有特殊性,如果遇到可以收藏并點贊!!!!

開發工具:

Python/ target=_blank class=infotextkey>Python版本:3

相關模塊:

selenium模塊、PIL模塊 以及一些python自帶的模塊。

Chromedriver:

有插件的就不用管他了,如果沒有就找小編領取一下!在文章下方有源碼和驅動下載的!

環境搭建:

安裝python并添加到環境變量,pip安裝需要的相關模塊即可。
接著,我們用它來自動訪問一下自己站的登錄界面:

browser.get("https://ad.oceanengine.com/pages/login/index.html")

設置一下等待時間,并自動填充一下用戶名和密碼:

wait = WebDriverWait(browser, 30)
element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="login"]/section/div[3]/div[10]/div')))  # 它的作用現在就是,等!!!!!!!
input_user = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="login"]/section/div[3]/div[4]/input'))).send_keys('user')  # 輸入賬號
input_password = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="login"]/section/div[3]/div[5]/input[1]'))).send_keys('password')  # 輸入密碼
element.click()#點擊登錄time.sleep(3)#等待三秒鐘就會有驗證碼了

其中用戶名和密碼的輸入框都直接用xpath來定位,非常方便

如何利用Python強勢破解今日頭條(巨量)滑塊驗證碼

 

不會還有人不知道吧,不會吧不會吧~
上面的操作一完成,就有驗證碼彈出來了,直接就有缺口,沒有原圖,無法做比較

驗證碼如圖

如何利用Python強勢破解今日頭條(巨量)滑塊驗證碼

 

驗證碼出來的操作

getimage = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="validate-big"]')))  # 等出圖片
browser.get_screenshot_as_file("./全屏截圖.jpg")
imgelement = browser.find_element_by_xpath('//*[@id="verify-bar-box"]/div[2]/img[2]')  # 定位驗證碼
rangle = (324,350, 590,500)  # 寫成我們需要截取的位置坐標
i = Image.open("./全屏截圖.jpg")  # 打開截圖
i = i.convert('RGB')
frame1 = i.crop(rangle)# frame1.show()# frame1.save('./驗證碼截圖.jpg')
data = frame1.getdata()#獲取rgb
w, h = frame1.size#獲取寬高XCoordinates = 0

接下來是核心算法,求出需要移動的x坐標距離

for x in range(1, w - 1):
    for y in range(1, h - 1):
        mid_pixel = data[w * y + x]  # 中央像素點像素值        if mid_pixel[0] > 230 and mid_pixel[1] > 230 and mid_pixel[2] > 230 and int(x) > 100:  # 找出上下左右四個方向像素點像素值
           top_pixel = data[w * (y - 1) + x]  # 上
           down_pixel = data[w * (y + 1) + x]  # 下
        if top_pixel[0] > 230 and top_pixel[1] > 230 and top_pixel[2] > 230 and down_pixel[0]> 230 and down_pixel[1]> 230 and down_pixel[2]> 230:
            XCoordinates=x

這是拖動操作!!包含了拖動時軌跡的變速運動!!

找到滑動的滑塊

element = browser.find_element_by_xpath('//*[@id="validate-drag-wrApper"]/div[2]/img')
location = element.location# # 獲得滑動圓球的高度y = location["y"]
# # 鼠標點擊元素并按住不放# print("第一步,點擊元素")
ActionChains(browser).click_and_hold(on_element=element).perform()## ActionChains(browser).move_by_offset(xoffset=0, yoffset=y - 445).perform()
## time.sleep(0.15)
# print("第二步,拖動元素")
distance=XCoordinates-60
# 初速度v = 0
# 單位時間為0.2s來統計軌跡,軌跡即0.2內的位移,越低看起來越絲滑!!
t = 0.08
# 位移/軌跡列表,列表內的一個元素代表0.2s的位移
tracks = []# 當前的位移current = 0
# 到達mid值開始減速mid = distance * 5 / 8
distance += 10  # 先滑過一點,最后再反著滑動回來
# a = random.randint(1,3)
while current < distance:
    if current < mid:
        # 加速度越小,單位時間的位移越小,模擬的軌跡就越多越詳細        a = random.randint(100, 200)  # 加速運動
    else:
        a = -random.randint(2, 10)  # 減速運動
    # 初速度    v0 = v    # 0.2秒時間內的位移
    s = v0 * t + 0.5 * a * (t ** 2)
    # 當前的位置    current += s    # 添加到軌跡列表    tracks.append(round(s))    # 速度已經達到v,該速度作為下次的初速度    v = v0 + a * t    if current>distance:
        break
# 反著滑動到大概準確位置# for i in range(4):
#     tracks.append(-random.randint(1, 3))
# for i in range(4):
#    tracks.append(-random.randint(1,3))
random.shuffle(tracks)
count=0
for item in tracks:
    print(item)
    count+=item    ActionChains(browser).move_by_offset(xoffset=item, yoffset=random.randint(-2, 2)).perform()
# ActionChains(browser).move_to_element_with_offset(to_element=element, xoffset=XCoordinates-18,yoffset=y - 445).perform()
# time.sleep(2)
# # 釋放鼠標print(count)
ActionChains(browser).release(on_element=element).perform()

然后就能登陸了!!!完美!!!其實還有登陸后的操作,也一并奉上吧~點擊操作呢

jiazaichenggong = wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[25]/div/div/div[2]/div[2]/button')))
        jiazaichenggong.click()        Exitboot = wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[1]/div[2]/div/div[6]/div/div[4]/div')))#點擊推出引導
        Exitboot.click()        closekey=wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[13]/div[2]/div[3]/button')))#查看快捷鍵
        closekey.click()        time.sleep(3)
        # closekey.send_keys(Keys.ESCAPE)        ActionChains(browser).move_by_offset(300,238).click().perform()
        time.sleep(5)
        clickdate=wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[1]/div[1]/div[3]/div[2]/div/div[1]/div')))#點擊時間
        clickdate.click()        print('請輸入時間選擇-格式如下2020.09.01')
        stime=input('請輸入開始時間:')
        etime = input('請輸入結束時間:')
        time.sleep(10)
        clickstime = wait.until(EC.presence_of_element_located((By.XPATH, f"//td[@title='{stime}']")))  # 點擊時間
        clickstime.click()        clicketime = wait.until(EC.presence_of_element_located((By.XPATH, f"//td[@title='{etime}']")))  # 點擊時間
        clicketime.click()        time.sleep(60)

分享到:
標簽:驗證碼 滑塊 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定