Giter Site home page Giter Site logo

automatic_ticket_purchase's Issues

关于signcode.js的提问

你好,想了解一下这个签名的生成的依据是什么呢,为什么可以通过网站的验证

场次和票价选择失败?

今天用改程序搭配firefox浏览器抢大麦的票的时候
提示购票数添加失败,日期选择失败
因为我的实验页面是场次和票价双选,所以xpath和代码中提供的有出入。更改了对应的xpath之后,发现通过xpath做find是不会报错的。但对find到的东西做click()时会进入到exception中。想问一下有没有好的解决办法啊,迷茫 ToT

String is updata

elif ticket_sku_status == '立即购买': buy_serial_number = '{}_{}_{}'.format(self.item_id, self.buy_nums, sku_id) submit_order_info = self.step2_click_buy_now(ex_params, buy_serial_number) break
elif ticket_sku_status == '立即预订': buy_serial_number = '{}_{}_{}'.format(self.item_id, self.buy_nums, sku_id) submit_order_info = self.step2_click_buy_now(ex_params, buy_serial_number) break
若进入死循环 修改为立即预订 即可进行购买

'RGV587_ERROR::SM::哎哟喂,被挤爆啦,请稍后重试'

问题描述:
buy_status = json.loads(response.text) 请求下单接口的时候返回:(非热门票测试)
{'ret': ['FAIL_SYS_USER_VALIDATE', 'RGV587_ERROR::SM::哎哟喂,被挤爆啦,请稍后重试'], 'data': {'url': 'https://buy.damai.cn:443//multi/trans/createOrder/_____tmd_____/punish?x5secdata=xb56c99d1179f379b61ba303bb8ec2a5d51657274589a-717315356a1926515014aaaac2dj176370006a__bx__buy.damai.cn%3A443%2Fmulti%2Ftrans%2FcreateOrder&x5step=2'}}

简单的尝试:
1.过了一个时间段,删除cookie重试了大概2~3次,返回失败
2.切换一个账号,返回失败
3.尝试提交订单时使用 移动端的ua ,返回失败

复现:
貌似在pc端,提交下单按钮的时候会出现一个滑动验证框(chromedriver 必现,chrome滑动验证过后下次不再出现)

想请教大佬这样的情况该怎么避免呢,因为感觉是直接请求购票接口,貌似没有使用类似selenuim的点击不会提示操作频繁。亦或是我这个ip被关进小黑屋(之前有selenium抢告五人的经历)

购票数量出现问题

还没开始buybtn的时候没法添加多个票吗??? 终端一直返回:购票数添加失败
即将开抢 这个一般抢票之前多久出来??刷新页面不受影响吗???

明天五月天突然买票..测试时间太短了...

找不到perform

Message: no such element: Unable to locate element: {"method":"css selector","selector":".perform"}
(Session info: chrome=75.0.3770.100)
一直报这个错,请问怎么解决,百度无果

[fix] 适配不需要选择观演人的场次

dm_viewer_pc = str([k for k, v in submit_order_info.get('data').items()])
dm_viewer_pc_id = re.search('dmViewerPC_[0-9]*', dm_viewer_pc).group()

如果是不需要选择观演人的场次,会有异常发生

类似 'Nonetype' object has no attribute 'group' 之类

这里应该需要先判断 re.search('dmViewerPC_[0-9]*', dm_viewer_pc) 是否为 None,有时间我修复一下提个 pr

提交信息

身份证信息在提交订单的时候显示null

联系人和手机号问题

每次自动进入购买界面的时候会显示“输入的联系人含特殊字符或长度不符,请修改后重新提交”以及“您输入的手机号码不符合规范,请重新输入”?我检查了一下,填写的是对的,只有手动刷新后重新填写才能手动继续

场次、票价选择

可以跑通而且蛮快的!非常感谢~
想问一下有没有选择演出时间和票价的模块可以补充呀
我也在参考原代码自己添加这部分,但之前没接触过网页相关所以不知道能不能行,加油
再次感谢!!

自行添加选择票档的功能

第一次接触selenium 不过原理蛮简单 摸索一下就能加上选择票档的功能
具体代码
self.driver.find_elements_by_xpath('//html//body//div[@class = "perform__order__select"]//div[2]//div//div[X]')[0].click()
X代表的就是第几个票档 加在while self.driver.title.find('确认订单') == -1:这句下面就可以了
感谢作者嗷

选座 求助

关于选座大家有什么方法吗?
整个可选区域划分成几大块并给定像素值,鼠标位置信息在另一个div,class="hover-info",只有将鼠标放在可选位置的时候,该span才会显示有element的内容。
所以要根据什么去定位呢,应该没办法直接用几排几座,可以用每个座位在块中的位置吗?我目前没有什么思路诶,也没有查到这方面的教程。
请大家帮忙或者指路~

运行环境后,进入登陆网站闪退。查询得知跟'find_element_by_name'有关,求大佬解答。

编译器报出问题如下:
Traceback (most recent call last):
File "C:/Users/ATiS/Downloads/Automatic_ticket_purchase-master/Automatic_ticket_purchase-master/Automatic_ticket_purchase.py", line 315, in
a.run()
File "C:/Users/ATiS/Downloads/Automatic_ticket_purchase-master/Automatic_ticket_purchase-master/Automatic_ticket_purchase.py", line 235, in run
self.login_cookies = tools.account_login('account', self.login_id, self.login_password)
File "C:\Users\ATiS\Downloads\Automatic_ticket_purchase-master\Automatic_ticket_purchase-master\tools.py", line 105, in account_login
driver.find_element_by_name('fm-login-id').send_keys(login_id)
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'

进程已结束,退出代码1

求周杰伦演唱会门票

看到大佬16号提交了代码,是专门为抢周杰伦南京站演唱会门票更新的吧,有票吗?

[question] 代码细节交流

使用了好几段 replace,挺好奇大佬是如何发现并替换的,思路如何,望回复,感恩

    def get_api_param(self):
        """ 获取请求大麦API所必须的一些参数, 可能大麦网js代码更新后需要修改此函数内的代码以重新获得参数信息 """

        def format_param(context):
            param = []
            for line in context.split(','):
                k, v = line.split(':')
                param.append('"{}":{}'.format(k, v))
            param = json.loads('{' + ','.join(param) + '}')
            return param

        js_code_define = self.session.get(
            "https://g.alicdn.com/damai/??/vue-pc/0.0.70/vendor.js,vue-pc/0.0.70/perform/perform.js").text
        # 获取商品SKU的API参数
        commodity_param = re.search('getSkuData:function.*?\|\|""}}', js_code_define).group()
        commodity_param = re.search('data:{.*?\|\|""}}', commodity_param).group()
        commodity_param = commodity_param.replace('data:{', ''). \
            replace('this.vmSkuData.privilegeId||""}}', '""'). \
            replace('itemId:e', 'itemId:""')
        commodity_param = format_param(commodity_param)
        # 获取订单购买用户的API参数
        ex_params = re.search(',i=Z}else{.*?;e&&', js_code_define).group()
        ex_params = re.search('{.*}', ex_params).group()
        ex_params = ex_params.replace('{var u=', '')[1:-1]
        ex_params = format_param(ex_params)
        return commodity_param, ex_params

---------- 获取购买必备参数异常,请重新解析response返回的参数 ---------- window.__INIT_DATA__ = ""; window.ERROR_OBJECT = { errorCode: '600002', errorMsg: '{"errorTip":"亲,当前渠道不支持购买此商品,请使用大麦APP下单","errorCode":"B-00203-200-382"}' }; {'damai': '1', 'channel': 'damai_app', 'umpChannel': '10002', 'atomSplit': '1', 'serviceVersion': '1.8.5'} 订单数据 ---------- 获取购票所需信息失败 ----------

up主 这个脚本现在是不是用不了啦,网页dom结构变更了,现在多了一个扫码,以及下面的立即购买

给驱动everyone权限了,为什么还报错

chromedriver_windows目录已经是everyone可读写权限了,为什么还会报错。

`C:\Automatic_ticket_purchase>python Automatic_ticket_purchase.py
Traceback (most recent call last):
File "C:\Python3.10.9\lib\site-packages\selenium\webdriver\common\service.py", line 72, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "C:\Python3.10.9\lib\subprocess.py", line 971, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Python3.10.9\lib\subprocess.py", line 1440, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
PermissionError: [WinError 5] 拒绝访问。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Automatic_ticket_purchase\Automatic_ticket_purchase.py", line 315, in
a.run()
File "C:\Automatic_ticket_purchase\Automatic_ticket_purchase.py", line 235, in run
self.login_cookies = tools.account_login('account', self.login_id, self.login_password)
File "C:\Automatic_ticket_purchase\tools.py", line 100, in account_login
driver = webdriver.Chrome(chromedriver, options=option)
File "C:\Python3.10.9\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in init
self.service.start()
File "C:\Python3.10.9\lib\site-packages\selenium\webdriver\common\service.py", line 86, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver_windows' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

`

多个购票人 求助

有多个购票人的时候会显示“购票人信息选中失败,自行查看元素位置”问题 但是选中第二个观影人的解析应该是没错的啊 求助

工作不正常

windows11
Python:3.11
Chrome:110.0.5481.178 (正式版本) (64 位) (cohort: Stable)
Chrome驱动:

[23588:3980:0228/222313.167:ERROR:device_event_log_impl.cc(218)] [22:23:13.167] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: 连到 系统上的设备没有发挥作用。 (0x1F)
[23588:3980:0228/222313.182:ERROR:device_event_log_impl.cc(218)] [22:23:13.182] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: 连到 系统上的设备没有发挥作用。 (0x1F)
[8884:22796:0228/222318.512:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[8884:22796:0228/222328.699:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[8884:22796:0228/222339.825:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[8884:22796:0228/222350.031:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[8884:22796:0228/222402.886:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[8884:22796:0228/222413.050:ERROR:ssl_client_socket_impl.cc(985)] handshake failed; returned -1, SSL error code 1, net_error -100
[24140:12836:0228/222508.184:ERROR:gpu_init.cc(523)] Passthrough is not supported, GL is disabled, ANGLE is

登录失败

登录时显示:ST验证失败:调用havana服务验证STr失败

票数怎么设置的

try:
self.driver.find_elements_by_xpath(
'//html//body//div[@Class = "perform__order__price"]//div[2]//div//div//a[2]')[
0].click() # 购票数+1(若需要)
except:
print("购票数添加失败")

运行结束没有报错,实际没有订单生成

step3_submit_order方法最后buy_status返回如下数据:
{'ret': ['FAIL_SYS_USER_VALIDATE', 'RGV587_ERROR::SM::哎哟喂,被挤爆啦,请稍后重试'], 'data': {'url': 'https://buy.damai.cn:443//multi/trans/createOrder/_____tmd_____/punish?x5secdata=xb6568394a27256ea09b2af72d5497d1ae1677477069a-717315356a1926515014abaac2di53586375a__bx__buy.damai.cn%3A443%2Fmulti%2Ftrans%2Fcreaep=2'}}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.