前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

在我们抢票得时候,总因手速不够错失良票

那么有什么办法提升我们抢到票得概率呢?

于是,我就想到了用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】为啥别人都能抢到票?因为他有这个抢票程序相关推荐

  1. python编写抢座位软件_程序员硬核Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  2. 秀动app抢票脚本_程序员硬核quot;Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  3. python抢票软件哪个好_买票回家难?软件加速包也无用?看我用python轻松抢票回家!...

    如果你对自己手速和市面上的各种 "加速包" 都没什么信心的话,不妨试试用程序员的手段抢票? 况且,[12306 官方宣布屏蔽了一大批付费抢票软件],这也意味着你即使给这些软件付了会 ...

  4. python在中小学教学中的应用-为什么越来越多人学习python?中小学都要开始了?...

    原标题:为什么越来越多人学习python?中小学都要开始了? 三阳酱今天看到一个大新闻!Python真的玩大了! 自2017年国务院印发<新一代人工智能发展规划>,明确指出在中小学阶段设置 ...

  5. Leetcode惊现马化腾每天刷题?为啥大佬都这么努力?代码你打算写到几岁?

    前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leetcode 上提交代码. 截图还贴出一个 Leetcode 账户地址.该地址的头像已从马化腾的照片换成腾讯 logo,昵称也从&qu ...

  6. 我去!Leetcode 惊现马化腾每天刷题 ? 为啥大佬都这么努力!

    点击上方"涛哥聊Python",选择"星标"公众号 重磅干货,第一时间送达 转自开源中国 前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leet ...

  7. java 12306高并发抢票_PHP 高并发、抢票、秒杀 解决方案

    对于抢票.秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比如有1 ...

  8. OSChina 周三乱弹 —— 除了电脑,别人都很开心

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2019)请戳(这里) [今日歌曲] @小小编辑:推荐歌曲,<三亩水田>- 蚂蚁先生 <三亩 ...

  9. 多线程抢票_java多线程下模拟抢票

    我们设置三个对象分别同时抢20张票,利用多线程实现. public class Web123506 implements Runnable{ private int ticteksNums=20;// ...

最新文章

  1. TensorFlow Google大会总结
  2. 【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
  3. jClarity发布Censum 3.0
  4. (翻译) MongoDB(7) 安装MongoDB
  5. MSSQL同时操作数据加锁问题
  6. 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...
  7. Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
  8. python创建变量score_使用Python 3.5.1中的变量创建文件时的FileNotFoundError
  9. Windows Mobile 6.5 新功能widget开发
  10. 桌面制作——Wallpaper Engine+Rainmeter
  11. 【目标检测】IoU、GIoU、DIoU、CIoU Loss详解及代码实现
  12. python定义空array_Python惯用技巧
  13. 三言两语话敏捷(2) - 持续集成
  14. HDOJ水题集合11:桶排序, 折半搜索
  15. linux 安装scons
  16. Java程序设计基础——cmd编译运行java文件详细步骤
  17. mvvm框架 android,Android MVVM 框架 MVVMFramework
  18. flutter web实现微信网页授权登录
  19. 亚马逊卖家培训返校季爆单技巧
  20. Uml 类图 stereotype的值含义,该怎么解决

热门文章

  1. html中表格中字体两端对齐,CSS真正实现文字两端对齐布局
  2. SqlServer数据库常用sql语句
  3. 三、Camunda工作流的表和用途说明(实践是检验真理的唯一标准)
  4. sql:查询选修了全部课程的学生姓名
  5. 电阻色环查询器[原创]
  6. 大数据毕设 航空公司客户价值分析
  7. 51单片机(六)矩阵键盘和矩阵键盘密码锁
  8. 计算机文化期末试卷,计算机文化基础期末试卷.pdf
  9. 对接钉钉审批_钉钉审批对接是什么-和钉钉审批对接相关的问题-阿里云开发者社区...
  10. Python实现NBA文字直播间