目标网站:
https://h5.waimai.meituan.com/waimai/mindex/home
点击右下角 我的 进行登录
输入手机号后,点击发送验证码 会出现滑块
首先前几步,只要注意把selenium 设置成手机模式,然后在点击发送验证码的时候不要用click使用TouchActions模拟触碰操作就可以
然后就是滑块的问题,这个现在由于极验的市场推广,网上解决方案有很多。
直接去下一个鼠标轨迹生成软件
设置一下参数,就可以得到鼠标轨迹
然后,就是如何收短信的问题。网上的短信接码平台有很多,比如这家http://www.52kma.com/member/smsservice.html
参考代码:
# coding:utf-8
import random
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.touch_actions import TouchActions
from selenium.webdriver.chrome.options import Options
url = "https://h5.waimai.meituan.com/waimai/mindex/home"
# 设置成手机模式
mobile_emulation = {"deviceName":"iPhone 6"}
options = Options()
options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
time.sleep(2)
# 点击 我的
my = driver.find_element_by_xpath('//*[@id="wm-container"]/div/div/div[6]/div/a[3]').click()
time.sleep(3)
# 输入手机号
mobi = '' # 在这里自己获取手机号
driver.find_element_by_id("phoneNumInput").send_keys(mobi)
# 点击 发送短信
el = driver.find_element_by_id('sendCodeBtnText')
TouchActions(driver).tap(el).perform()
# 滑动滑块
time.sleep(2)
slider = driver.find_element_by_id('yodaBox')
trace = [‘这里轨迹自己生成下’]
# 滑动模块
ActionChains(driver).click_and_hold(slider).perform()
y = 0
for x in trace:
e = random.uniform(0, 0.01)
if x == (396-105) or x == (329 - 105) or x == (239 - 105):
a = 0.25 + e
y = 1
else:
a = 0.015 + e
y = 0
ActionChains(driver).move_by_offset(xoffset=x, yoffset=y).perform()
time.sleep(a)
ActionChains(driver).release().perform()
某团外卖 登录滑块的非selenium解决方案也有人做过 参考这个:https://blog.csdn.net/weixin_43926264/article/details/89145670