【python】为啥别人都能抢到票?因为他有这个抢票程序
前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
在我们抢票得时候,总因手速不够错失良票
那么有什么办法提升我们抢到票得概率呢?
于是,我就想到了用python自动抢呀~代码不比我手速快多了
下面就给大家来分享一下我得代码
本文章完整源码直接在文末名片领取。点击此处跳转
知识点:
selenium 淘宝滑块处理
抢购逻辑实现
开发必备环境:
python 3.8
pycharm 专业版
谷歌浏览器+谷歌驱动+selenium3.141.0
stealth.min.js
模块介绍
selenium 3.141.0 旧
自动化操作浏览器的模块
操作驱动的 驱动是用来操作浏览器的
requests:
模拟请求的模块 效率会很高
效率高 = 难度大
代码展示
本文章完整源码直接点击此处跳转领取。
导入模块
import time
from info import PHONE, PASSWORD
from selenium import webdriver
def get_tracks(distance):
‘’’
拿到移动轨迹,模仿人的滑动行为,先匀加速后匀减速
匀变速运动基本公式:
①v=v0+at
②s=v0t+½at²
③v²-v0²=2as
:param distance:
需要移动的距离
:return:
存放每0.2秒移动的距离
‘’’
初速度
v = 5
单位时间为0.2s来统计轨迹,轨迹即0.2内的位移
t = 0.2
位移/轨迹列表,列表内的一个元素代表0.2s的位移
tracks = []
当前的位移
current = 0
到达mid值开始减速
mid = distance * 4 / 5while current < distance:if current < mid:
加速度越小,单位时间的位移越小,模拟的轨迹就越多越详细
a = 8else:a = -3
初速度
v0 = v
0.2秒时间内的位移
s = v0 * t + 0.5 * a * (t ** 2)
当前的位置
current += s
添加到轨迹列表
tracks.append(round(s))
速度已经达到v,该速度作为下次的初速度
v = v0 + a * treturn tracks
login_url = "https://*****.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F"
target_url = "https://***.cn/item.htm?spm=a2oeg.home.card_0.ditem_3.591b23e1jhP4Ro&id=694591586226"
浏览器配置对象
options = webdriver.ChromeOptions()
禁用自动化栏
options.add_experimental_option('excludeSwitches', ['enable-automation'])
屏蔽保存密码提示框
prefs = {'credentials_enable_service': False, 'profile.password_manager_enabled': False}
options.add_experimental_option('prefs', prefs)
特征处理
options.add_argument('--disable-blink-features=AutomationControlled')
一. 登陆
1.1 打开浏览器
driver = webdriver.Chrome(options=options)
f = open('stealth.min.js', mode='r', encoding='utf-8').read()
移除selenium当中爬虫的特征
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': f})
1.2 打开登陆网页
driver.get(login_url)
1.3 输入账号, 输入密码, 点击登陆 (滑块)
try:
进入内嵌页面
driver.switch_to.frame(0)
账号输入框: #fm-login-id
driver.find_element_by_css_selector('#fm-login-id').send_keys(PHONE)
密码输入框: #fm-login-password
driver.find_element_by_css_selector('#fm-login-password').send_keys(PASSWORD)time.sleep(1)
为什么会出现滑块, 用selenium打开的浏览器, 和正常用户打开的浏览器不同
过滑块
driver.switch_to.frame(0)slider = driver.find_element_by_css_selector('#nc_1_n1z')
让鼠标执行 点击并且保持按住元素slider
webdriver.ActionChains(driver).click_and_hold(on_element=slider).perform()
横向移动鼠标
webdriver.ActionChains(driver).move_by_offset(xoffset=260, yoffset=0).perform()
松开鼠标
webdriver.ActionChains(driver).pause(0.5).release().perform()driver.switch_to.parent_frame()
except:print("没有遇到滑块")
登陆按钮: #login-form > div.fm-btn > button
driver.find_element_by_css_selector('#login-form > div.fm-btn > button').click()
time.sleep(2)
二. 下单
2.1 打开抢购页面
driver.get(target_url)
2.2 点击立即购买
driver.find_element_by_css_selector('.buybtn').click()
2.3 点击观影人
driver.find_element_by_css_selector('.ticket-buyer-select .next-checkbox-label').click()
2.4 点击同意并提交
driver.find_element_by_css_selector('.submit-wrapper .next-btn.next-btn-normal.next-btn-medium').click()
time.sleep(2)driver.switch_to.frame(0)
slider2 = driver.find_element_by_css_selector('#nc_1_n1z')
tracks = get_tracks(300) # 剩下的50%在模拟移动
webdriver.ActionChains(driver).click_and_hold(on_element=slider2).perform()
for x in tracks:webdriver.ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦
【python】为啥别人都能抢到票?因为他有这个抢票程序相关推荐
- python编写抢座位软件_程序员硬核Python抢票教程”,帮你抢回家车票
盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...
- 秀动app抢票脚本_程序员硬核quot;Python抢票教程”,帮你抢回家车票
盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...
- python抢票软件哪个好_买票回家难?软件加速包也无用?看我用python轻松抢票回家!...
如果你对自己手速和市面上的各种 "加速包" 都没什么信心的话,不妨试试用程序员的手段抢票? 况且,[12306 官方宣布屏蔽了一大批付费抢票软件],这也意味着你即使给这些软件付了会 ...
- python在中小学教学中的应用-为什么越来越多人学习python?中小学都要开始了?...
原标题:为什么越来越多人学习python?中小学都要开始了? 三阳酱今天看到一个大新闻!Python真的玩大了! 自2017年国务院印发<新一代人工智能发展规划>,明确指出在中小学阶段设置 ...
- Leetcode惊现马化腾每天刷题?为啥大佬都这么努力?代码你打算写到几岁?
前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leetcode 上提交代码. 截图还贴出一个 Leetcode 账户地址.该地址的头像已从马化腾的照片换成腾讯 logo,昵称也从&qu ...
- 我去!Leetcode 惊现马化腾每天刷题 ? 为啥大佬都这么努力!
点击上方"涛哥聊Python",选择"星标"公众号 重磅干货,第一时间送达 转自开源中国 前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leet ...
- java 12306高并发抢票_PHP 高并发、抢票、秒杀 解决方案
对于抢票.秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比如有1 ...
- OSChina 周三乱弹 —— 除了电脑,别人都很开心
2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2019)请戳(这里) [今日歌曲] @小小编辑:推荐歌曲,<三亩水田>- 蚂蚁先生 <三亩 ...
- 多线程抢票_java多线程下模拟抢票
我们设置三个对象分别同时抢20张票,利用多线程实现. public class Web123506 implements Runnable{ private int ticteksNums=20;// ...
最新文章
- TensorFlow Google大会总结
- 【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
- jClarity发布Censum 3.0
- (翻译) MongoDB(7) 安装MongoDB
- MSSQL同时操作数据加锁问题
- 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...
- Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
- python创建变量score_使用Python 3.5.1中的变量创建文件时的FileNotFoundError
- Windows Mobile 6.5 新功能widget开发
- 桌面制作——Wallpaper Engine+Rainmeter
- 【目标检测】IoU、GIoU、DIoU、CIoU Loss详解及代码实现
- python定义空array_Python惯用技巧
- 三言两语话敏捷(2) - 持续集成
- HDOJ水题集合11:桶排序, 折半搜索
- linux 安装scons
- Java程序设计基础——cmd编译运行java文件详细步骤
- mvvm框架 android,Android MVVM 框架 MVVMFramework
- flutter web实现微信网页授权登录
- 亚马逊卖家培训返校季爆单技巧
- Uml 类图 stereotype的值含义,该怎么解决