Git Product home page Git Product logo

bjguahao's Introduction

👋 Hi there

I'm a security software developer from Beijing, China

👺 Languages and Tools

🐊 Code Stats

Breaker's github stats

🍀 Wakatime

Breaker's wakatime stats

🦄 daily.dev Card

Breaker's Dev Card

🌴 Ongoing Projects


⚡ Github Visitors

Top Langs

bjguahao's People

Contributors

ibreaker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bjguahao's Issues

脚本在9点29分会尝试获取医生数据,并错误认为已经无号,程序退出。

如果提前运行程序,在9点29分时程序会尝试获取医生数据,此时还未放号,导致程序不能获取到医生数据,进而令程序认为已经无号并退出。需要在9时29分20几秒的时候打开软件才能正常工作并抢号。希望能修改此处逻辑,在9时30分之前获取不到医生数据应该再次尝试,而不是直接退出程序。

能否增加一个指定新的预约时间的方法?

通常挂号都是提前七天左右,那么如果今天失败了,明天再尝试的话就必须修改config。
但如果把挂号日期设定为类似"+7"(表示7天之后)之类的规则,就可以直接运行程序,而不用修改config文件了。

验证码错误的问题复现

今天中午又挂了一下号,昨天解决了儿童挂号缺少信息的问题,今天挂号 第一个验证码下发下来输入之后会提示验证码错误,接着第二次请求,验证码输入无问题成功挂到号。
朋友挂北医三院的时候也遇到过验证码第一次不正确,甚至第二次都不正确的问题。
同样的 不用去抢的号,或者很多时间点都有号的科室,第一个验证码肯定正确。
看了下代码 没有思路,不知道是啥问题。你有什么思路么?

关于运行脚本的问题

代码白痴,不知道如何运行脚本,未抢到号,操作如下:
环境:python 2.7
步骤:1.修改json文件,保存
2.命令行输入 python2 bjguahao.py,出错,错误为IOError
3.命令行输入 python2 bjguahao.py -c test.json,错误如上
4.命令行再次输入python2 bjguahao.py,此时显示配置已完成开始登陆,然而还是出错,错误为用户不存在,登陆失败
5.重复步骤4,一直到9点30登陆网页挂号界面显示已约满
求问大佬如何运行脚本。。。

mac 获取验证码失败

验证码: Traceback (most recent call last):
File "/Users/kangduo/Desktop/bjguahao/bjguahao.py", line 447, in
guahao.run()
File "/Users/kangduo/Desktop/bjguahao/bjguahao.py", line 431, in run
sms_code = self.get_sms_verify_code() # 获取验证码
File "/Users/kangduo/Desktop/bjguahao/bjguahao.py", line 377, in get_sms_verify_code
code = self.imessage.get_verify_code()
File "/Users/kangduo/Desktop/bjguahao/imessage.py", line 94, in get_verify_code
code = ft.result()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/Users/kangduo/Desktop/bjguahao/imessage.py", line 38, in _get_keyboard_verify_code
kb = kbhit.KBHit()
File "/Users/kangduo/Desktop/bjguahao/kbhit.py", line 46, in init
self.new_term = termios.tcgetattr(self.fd)
termios.error: (25, 'Inappropriate ioctl for device')

mac os high Sierra 10.13.4

网页改版patient_id获取逻辑变更,建议填加手动输入接口

5.10号网页应该进行了改版,通过就诊人姓名获取patient_id的逻辑出现错误,可以config中填增加手动填加patient_id接口,用户可以在就诊人管理页面,删除按钮那边获取patient_id,相对比较稳定。当然也可以重新按照新逻辑抽取patient_id

mac 下用 iMessage 读验证码可能有权限问题

macos 的 SIP 导致 ~/Library/Messages 默认是不给权限的
如果用 iMessage 读验证码遇到了抛异常“找不到短信数据库”,就是权限问题。
这个用 sudu 也不管用。需要

  1. cmd+R 进入恢复模式。
  2. 打开 terminal 执行 csrutil disable。

departmentid map

如果想要挂某一科室,但不知道departmentID怎么办? 有没有这样一个mapping,自动的根据科室中文名称map到ID?
以及是不是指定某个特定专家的号,这个需求应该比较大

获取验证码的接口会返回一个html而不是json导致报错

Traceback (most recent call last):
File "bjguahao.py", line 332, in
guahao.run(config_path)
File "bjguahao.py", line 314, in run
sms_code = self.get_sms_verify_code() # 获取验证码
File "bjguahao.py", line 267, in get_sms_verify_code
data = json.loads(response.text)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

获取验证码出错

Thu, 01 Nov 2018 08:30:02 connectionpool.py[line:393] DEBUG http://www.bjguahao.gov.cn:80 "POST /v/sendorder.htm HTTP/1.1" 200 24
Thu, 01 Nov 2018 08:30:02 bjguahao.py[line:373] DEBUG {"code":200,"msg":"OK."}
Thu, 01 Nov 2018 08:30:02 bjguahao.py[line:375] INFO 获取验证码成功
验证码: Traceback (most recent call last):
File "bjguahao.py", line 447, in
guahao.run()
File "bjguahao.py", line 431, in run
sms_code = self.get_sms_verify_code() # 获取验证码
File "bjguahao.py", line 377, in get_sms_verify_code
code = self.imessage.get_verify_code()
File "/Users/chenzang/workspace/bjguahao/imessage.py", line 91, in get_verify_code
code = ft.result()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/Users/chenzang/workspace/bjguahao/imessage.py", line 71, in _get_sms_verify_code
rec_time = datetime.datetime.fromtimestamp(tm + OSX_EPOCH)
OSError: [Errno 84] Value too large to be stored in data type

请问这是什么原因?

指定医生名字的时候可以是数组吗?

现在指定一个医生,这医生没号了,会默认选择其他医生,一个科室我想挂这个科室的其中三个医生的号,在第一个没挂上的时候,再去改配置医生么名字再挂时间来不及了

指定医生

现在通过114平台还能指定医生吗?114上面不是只能指定医生级别嘛,不能指定医生姓名

bjguahao-android 企划

打算做一个 android 版的自动填写验证码,目前有以下几个方案:

  1. 用 QPython3 在 Android 上直接运行整个脚本,通过 SL4A API 读取安卓短信
  2. 使用 adb 工具(需开启 usb debugging)从PC访问安卓短信
  3. 在安卓上安装一个 app,并将短信实时推送到 PC

个人倾向 1,2 的话好像需要直接读数据库,3 的话可能有延迟。

方案1进行中,见 https://github.com/coeusite/bjguahao/tree/patch-4 (patch-4 分支)
注意:仅支持 QPython 3.6
目前进度:

  • 引入 useQPython3 配置参数
  • 修正 bjguahao.py 的验证码获取逻辑
  • 建立 qpython3.py
    • 初始化
    • 遍历未读短信,并获取验证码
  • 建立 qpython3_run.py 用于运行
  • 修正 bjguahao.py 的 cookies 缓存功能
  • update readme
  • 测试

挂号失败,post 的 response 是一个 html

遇到一个BUG,挂号时的 response 不是 json 而是一个 html
bjguahao.py > get_it() > response = self.browser.post(self.confirm_url , data=preload)

尝试测试了一下,结果弄得我自己一头雾水。

在 Chrome 上手动挂号,挂号时同样是

dutySourceId:45004502
hospitalId:122
departmentId:200001019
doctorId:200287869
patientId:**********
hospitalCardId:
medicareCardId:
reimbursementType:-1
smsVerifyCode:763466
childrenBirthday:
isAjax:true
  • 返回值如下:
code:200
data:******
hasError:false
msg:"OK"

用脚本挂同一个号,post 的数据基本一致,除了SMS码和reimbursementType,但返回值的response.text却是个HTML,且挂号不成功。
response.text写入文件后发现是选择时间的那个挂号页。

提前启动程序 导致cookies失效

医院早上8:45放号,提前3小时启动程序,导致cookies失效,debug显示“未登录”导致挂号失败;
建议调整,程序提前1分钟启动时,再次登录,确保登录成功。

**人民解放军总医院(301医院)—心血管内科 报错

Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:106] INFO 开始检查是否已经登录
Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:141] INFO cookies登录成功
Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:221] INFO 当前号余量:
+----------------+------------------------------------------------------------------------------------------------------+--------+
| 医生姓名 | 擅长 | 号余量 |
+----------------+------------------------------------------------------------------------------------------------------+--------+
| 心内科 | 心血管内科常见病的诊治。 | 2 |
| 难治高血压门诊 | 心血管内科常见病的诊治。 | 1 |
| 张然 | 冠心病、心力衰竭、心律失常和高血压病的诊断和治疗,主要从事冠心病的介入诊断和治疗,以及围手术期管理。 | 1 |
| 李玉峰 | 擅长难治性高血压,高脂血症,频发室性早搏,冠心病等各种原因引起的胸痛的诊治。 | 1 |
| 侯允天 | 擅长高血压,心律失常,冠心病,代谢综合征的诊治。 | 1 |
| 白静 | 擅长缺血性胸闷、胸痛的诊治;心肌梗死的急诊介入及长期药物治疗;冠脉病变、支架内再狭窄的介入治疗。 | 1 |
| 晏沐阳 | 心血管内科疾病的诊治。 | 1 |
| 陈光辉 | 擅长冠心病、肾动脉狭窄的介入诊断与治疗和高血压、血脂异常以及各种原因引起心衰等心血管疾病的诊治。 | 0 |
| 张志寿 | 冠心病、高血压病、心脏瓣膜病、心肌病心律失常的诊治。 | 0 |
| 王禹 | 擅长复杂冠心病及肾、髂动脉狭窄的介入治疗及冠心病综合药物治疗。 | 2 |
| 孙志军 | 擅长冠心病及肾动脉狭窄的介入治疗,难治性高血压诊治,过敏体质病人介入检查和治疗。 | 1 |
| 刘秀云 | 冠心病、心肌梗塞、心律失常、高血压等疾病的诊治。 | 1 |
| 李小鹰 | 冠心病、高血压、心肌病、心力衰竭、心律失常的诊治。 | 0 |
+----------------+------------------------------------------------------------------------------------------------------+--------+
Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:211] INFO 选中:***
Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:289] INFO 病人ID:***
输入短信验证码: Mon, 01 Jan 2018 16:56:07 bjguahao.py[line:332] INFO 获取验证码成功
413147
Mon, 01 Jan 2018 16:56:24 bjguahao.py[line:262] ERROR 亲属姓名不能为空!

可以挂当天的号吗?

大佬您好,这个脚本可以挂当天的号吗?还有就是一些科室的号在“北京预约挂号平台”不放号,能不能挂到?

平台挂号的确认步骤,增加了获取手机验证码,求支持~~

2017-09-12 10:51:58 [debug] post data :
Traceback (most recent call last):
File "bjguahao.py", line 323, in
guahao.run(config_path)
File "bjguahao.py", line 305, in run
sms_code = self.get_sms_verify_code() # 获取验证码
File "bjguahao.py", line 261, in get_sms_verify_code
data = json.loads(response.text)
File "../lib/python2.7/json/init.py", line 339, in loads

还是老问题,windows的CMD下全部中文字符集乱码

朋友的电脑里没有ide环境,只能用cmd,但是cmd下 乱码严重 utf-8的编码在gbk下废了。。
未修改代码前的屏显
C:\bjguahao-master>bjguahao.py
�[0;37m 2017-03-24 15:51:10 [info] DebugLevel璁剧疆涓?2�[0m
�[0;37m 2017-03-24 15:51:10 [info] 閰嶇疆鍔犺浇瀹屾垚�[0m
�[0;37m 2017-03-24 15:51:10 [info] 更新时间: 09:30�[0m
�[0;37m 2017-03-24 15:51:10 [info] 预约周期: 7�[0m
�[0;37m 2017-03-24 15:51:10 [info] 寮€濮嬬櫥闄?[0m
�[0;37m 2017-03-24 15:51:10 [info] 鐧婚檰鎴愬姛�[0m
�[0;37m 2017-03-24 15:51:11 [info] 鑾峰彇楠岃瘉鐮佹垚鍔?[0m
杈撳叆鐭俊楠岃瘉鐮? 717201
�[0;37m 2017-03-24 15:51:36 [info] 褰撳墠鍙蜂綑閲?�[0m
+---------------+------+--------+
| 医生姓名 | 擅长 | 号余量 |
+---------------+------+--------+
| 普通专业号5元 | | 2 |
+---------------+------+--------+
�[0;37m 2017-03-24 15:51:36 [info] 选中:普通专业号5元�[0m
�[0;37m 2017-03-24 15:51:37 [info] 病人ID:231307790�[0m
�[0;37m 2017-03-24 15:51:37 [info] 鎸傚彿鎴愬姛�[0m
修改了字符集后
.encode("GBK", 'ignore')
C:\bjguahao-master>bjguahao.py
�[0;37m 2017-03-24 15:47:11 [info] DebugLevel璁剧疆涓?2�[0m
�[0;37m 2017-03-24 15:47:11 [info] 配置加载完成�[0m
�[0;37m 2017-03-24 15:47:12 [info] 更新时间: 09:30�[0m
�[0;37m 2017-03-24 15:47:12 [info] 预约周期: 7�[0m
�[0;37m 2017-03-24 15:47:12 [info] 开始登陆�[0m
�[0;37m 2017-03-24 15:47:12 [info] 登陆成功�[0m
�[0;37m 2017-03-24 15:47:12 [info] 获取验证码成功�[0m
输入短信验证码: 922127
�[0;37m 2017-03-24 15:47:27 [info] 当前号余量:�[0m
+---------------+------+--------+
| 医生姓名 | 擅长 | 号余量 |
+---------------+------+--------+
| 普通专业号5元 | | 3 |
+---------------+------+--------+
�[0;37m 2017-03-24 15:47:27 [info] 选中:普通专业号5元�[0m
�[0;37m 2017-03-24 15:47:27 [info] 病人ID:231307790�[0m
�[0;37m 2017-03-24 15:47:27 [info] 挂号成功�[0m

无法登陆,用户名不存在

Fri, 12 Oct 2018 16:50:05 bjguahao.py[line:75] INFO 配置加载完成
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:343] INFO 今日可挂号到: 2018-10-19
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:353] INFO 放号时间: 2018-10-12 07:00
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:173] INFO cookies登录失败
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:174] INFO 开始使用账号密码登陆
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:194] ERROR 用户不存在!
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:198] ERROR
Fri, 12 Oct 2018 16:50:06 bjguahao.py[line:199] ERROR 登陆失败

login html is 404 登录失败

Tue, 18 Dec 2018 09:34:19 bjguahao.py[line:70] INFO 配置加载完成
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:322] INFO 今日可挂号到: 2018-12-25
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:332] INFO 放号时间: 2018-12-18 07:00
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:114] INFO 开始检查是否已经登录
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:154] INFO cookies登录失败
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:155] INFO 开始使用账号密码登陆
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:174] ERROR 用户不存在!
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:178] ERROR
Tue, 18 Dec 2018 09:34:20 bjguahao.py[line:179] ERROR 登陆失败

http://www.bjguahao.gov.cn/quicklogin.htm" is 404

获取患者id失败

程序运行登陆后提示“获取患者id失败”,有人遇到过类似问题没?

关于验证码提前获取问题

记得去年9月份自己也写过脚本去挂号,当时有一个小trick,验证码可以提前一分钟获取,这样只要查到号源信息,麻烦可以发起confirm,我看代码里面是查询到后才发验证码,现在是不能用提前获取验证码方法了?

关于更新时间没有group属性的问题

你好,我今天想直接运行一下脚本看看结果,但是在运行的过程中出现了如下错误:
will@will-VirtualBox:~/bjguahao$ python2.7 bjguahao.py
2017-09-05 20:51:48 [info] DebugLevel设置为:2
2017-09-05 20:51:48 [info] 配置加载完成
Traceback (most recent call last):
File "bjguahao.py", line 323, in
guahao.run(config_path)
File "bjguahao.py", line 278, in run
self.get_duty_time()
File "bjguahao.py", line 237, in get_duty_time
refresh_time = m.group('refreshTime')
AttributeError: 'NoneType' object has no attribute 'group'

所以想问一下这个是我自己的环境哪里配置的不对嘛,还是说哪里有遗漏?
运行环境是ubuntu python2.7

验证码错误

我获得验证码之后,在输入框输入验证码时会显示验证码错误。不知道是不是这个流程不对,想问一下验证码是在什么时候获取比较好,我这边是把验证码获取放到刷到号之后发送,还是会显示验证码错误。

cookie登陆

先判断cookie是否可以登陆,失败的话用账号密码登陆

还没放号问题

快到放号时间开始运行脚本9:29,每秒重试一次,直到超过放号时间9:32,一直显示还没放号。强行结束程序9:32,重启程序9:32,此时才显示医生列表,但是号早已被挂完。。。
难道select_doctor过程有缓存?看起来又不像,很奇怪,不知道有没有其他人遇到详细问题?眼睁睁错过放号时间但程序始终显示没放号。
运行环境win7 cmd

找不到短信数据库

验证码: Sun, 10 Feb 2019 00:21:19 imessage.py[line:34] ERROR OperationalError('unable to open database file')
找不到短信数据库
Traceback (most recent call last):
File "bjguahao.py", line 453, in
guahao.run()
File "bjguahao.py", line 437, in run
sms_code = self.get_sms_verify_code() # 获取验证码
File "bjguahao.py", line 381, in get_sms_verify_code
code = self.imessage.get_verify_code()
File "/code/OpenSource/bjguahao/imessage.py", line 93, in get_verify_code
done, not_done = wait([sms, keyboard], timeout=30, return_when=FIRST_COMPLETED)
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/_base.py", line 301, in wait
waiter.event.wait(timeout)
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 552, in wait
signaled = self._cond.wait(timeout)
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 300, in wait
gotit = waiter.acquire(True, timeout)
KeyboardInterrupt
^CError in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/thread.py", line 40, in _python_exit
t.join()
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1032, in join
self._wait_for_tstate_lock()
File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1048, in _wait_for_tstate_lock
elif lock.acquire(block, timeout):

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.