日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

学习伟大的Python的第七天

發(fā)布時間:2024/9/5 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习伟大的Python的第七天 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.注意將電腦的顯示比例調(diào)至100%

破解極驗滑動驗證
破解極驗滑動驗證
博客園登錄url:
??? https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F

代碼邏輯:
1、輸入用戶名與密碼,并點擊登錄
2、彈出滑動驗證,獲取有缺口與完整的圖片
3、通過像素點進行比對,獲取滑動位移距離
4、模擬人的行為軌跡
5、開始滑動
???
'''
from selenium import webdriver? # 用來驅(qū)動瀏覽器的
from selenium.webdriver import ActionChains? # 破解滑動驗證碼的時候用的 可以拖動圖片
import time
from PIL import Image? # pip3 install pillow
import random

# 截圖圖片函數(shù)
def cut_image(driver):
??? # 獲取整個頁面圖片,圖片名字為'snap.png'
??? driver.save_screenshot('snap.png')

??? # 獲取滑動小畫圖
??? image = driver.find_element_by_class_name('geetest_canvas_img')
??? print(image.location)
??? print(image.size)

??? # 獲取小圖片的左上右下的位置
??? left = image.location['x']
??? top = image.location['y']
??? right = left + image.size['width']
??? buttom = top + image.size['height']
??? print(left, top, right, buttom)

??? # 調(diào)用open方法打開全屏圖片并賦值給image_obj對象
??? image_obj = Image.open('snap.png')

??? # 通過image_obj對象對小圖片進行截取
??? # box: The crop rectangle, as a (left, upper, right, lower)-tuple.
??? img = image_obj.crop((left, top, right, buttom))
??? # 打開截取后的小圖片
??? # img.show()
??? return img

# 獲取完整圖片
def get_image1(driver):
??? time.sleep(2)

??? # 修改document文檔樹,把完整圖片的display屬性修改為block
??? js_code = '''
??????? var x = document.getElementsByClassName("geetest_canvas_fullbg")[0].style.display = "block";
??? '''

??? # 執(zhí)行js代碼
??? driver.execute_script(js_code)

??? # 截取圖片
??? image = cut_image(driver)

??? return image

# 獲取有缺口圖片
def get_image2(driver):
??? time.sleep(2)

??? # 修改document文檔樹,把完整圖片的display屬性修改為block
??? js_code = '''
??????? var x = document.getElementsByClassName("geetest_canvas_fullbg")[0].style.display = "none";
??? '''

??? # 執(zhí)行js代碼
??? driver.execute_script(js_code)

??? # 截取圖片
??? image = cut_image(driver)

??? return image

# 獲取滑塊滑動距離
def get_distance(image1, image2):
??? # 小滑塊右側(cè)位置
??? start = 60

??? # 像素差
??? num = 60
??? print(image1.size)
??? for x in range(start, image1.size[0]):
??????? for y in range(image1.size[1]):

??????????? # 獲取image1完整圖片每一個坐標的像素點
??????????? rgb1 = image1.load()[x, y]

??????????? # 獲取image2缺口圖片每一個坐標的像素點
??????????? rgb2 = image2.load()[x, y]
??????????? # (60, 86, 40) (60, 86, 40) rgb
??????????? print(rgb1, rgb2)

??????????? # abs獲取絕對值, 像素點比較的值
??????????? r = abs(rgb1[0] - rgb2[0])
??????????? g = abs(rgb1[1] - rgb2[1])
??????????? b = abs(rgb1[2] - rgb2[2])

??????????? # 如果條件成立,則找到缺口位置
??????????? if not (r < num and g < num and b < num):
??????????????? # 有誤差 - 7像素
??????????????? return x - 7

# 模擬人的滑動軌跡
def get_strck_move(distance):
??? distance += 20

??? '''
??? 滑動行為軌跡
??? 加速公式:
??????? v = v0 + a * t
???????
??? 路程公式:
??????? s = v0 * t + 0.5 * a * (t ** 2)
??? '''

??? # 初速度
??? v0 = 0

??? # 時間
??? t = 0.2

??? # 位置
??? s = 0

??? # 滑動軌跡列表 向前滑動列表
??? move_list = []

??? # 中間值,作為加減速度的位置
??? mid = distance / 5 * 3

??? # 加減速度列表
??? v_list = [1, 2, 3, 4]

??? # 循環(huán)位移
??? while s < distance:
??????? if s < mid:
??????????? # 隨機獲取一個加速度
??????????? a = v_list[random.randint(0, len(v_list) - 1)]

??????? else:
??????????? # 隨機獲取一個減速度
??????????? a = -v_list[random.randint(0, len(v_list) - 1)]

??????? '''
??????? 勻加速\減速運行
??????? v = v0 + a * t

??????? 位移:
??????? s = v * t + 0.5 * a * (t**2)
??????? '''
??????? # 獲取初始速度
??????? v = v0

??????? # 路程公式:
??????? s1 = v * t + 0.5 * a * (t ** 2)
??????? s1 = round(s1)? # 取整

??????? # 加速公式:
??????? # v = v0 + a * t
??????? m_v = v + a * t

??????? # 把當(dāng)前加/減速度賦值給初始速度,以便下一次計算
??????? v0 = m_v

??????? # 把位移添加到滑動列表中
??????? move_list.append(s1)

??????? # 修改滑動初始距離
??????? s += s1

??? # 后退列表, 自定義后退滑動軌跡,必須是負值
??? back_list = [-1, -1, -2, -3, -2, -1, -1, -2, -3, -2, -1, -1]

??? return {'move_list': move_list, 'back_list': back_list}

def main():
??? driver = webdriver.Chrome(r'F:\python學(xué)習(xí)\Scripts\chromedriver')
??? driver.implicitly_wait(10)
??? try:
??????? driver.get('https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F')

??????? # 1、輸入用戶名與密碼,并點擊登錄
??????? user_input = driver.find_element_by_id('LoginName')
??????? user_input.send_keys('你的博客園賬號

轉(zhuǎn)載于:https://www.cnblogs.com/chenhhh/p/11055837.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的学习伟大的Python的第七天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。