知识点
- selenium 淘宝滑块处理
- 抢购逻辑实现
必备环境
- python 3.8
- pycharm 专业版
- 谷歌浏览器 + 谷歌驱动 + selenium3.141.0
- stealth.min.js
代码展示
模块导入
import time
from info import PHONE, PASSWORD
from selenium import webdriver
模拟滑动轨迹
拿到移动轨迹,模仿人的滑动行为,先匀加速后匀减速。
def get_tracks(distance):
# 初速度
v = 5
# 单位时间为 0.2s 来统计轨迹,轨迹即 0.2s 内的位移
t = 0.2
# 位移/轨迹列表,列表内的一个元素代表 0.2s 的位移
tracks = []
# 当前的位移
current = 0
# 到达 mid 值开始减速
mid = distance * 4 / 5
while current < distance:
if current < mid:
# 加速度越小,单位时间的位移越小,模拟的轨迹就越多越详细
a = 8
else:
a = -3
# 初速度
v0 = v
# 0.2 秒时间内的位移
s = v0 * t + 0.5 * a * (t ** 2)
# 当前的位置
current += s
# 添加到轨迹列表
tracks.append(round(s))
# 速度已经达到 v,该速度作为下次的初速度
v = v0 + a * t
return tracks
登录流程
driver = webdriver.Chrome(options=options)
f = (, mode=, encoding=).read()
driver.execute_cdp_cmd(, {: f})
driver.get(login_url)
:
driver.switch_to.frame()
driver.find_element_by_css_selector().send_keys(PHONE)
driver.find_element_by_css_selector().send_keys(PASSWORD)
time.sleep()
driver.switch_to.frame()
slider = driver.find_element_by_css_selector()
webdriver.ActionChains(driver).click_and_hold(on_element=slider).perform()
webdriver.ActionChains(driver).move_by_offset(xoffset=, yoffset=).perform()
webdriver.ActionChains(driver).pause().release().perform()
driver.switch_to.parent_frame()
:
()
driver.find_element_by_css_selector().click()
time.sleep()


