Python帮你点点点……预约GNIB

GNIB可以理解成爱尔兰的暂住证,9月份的网上预约就跟抢火车票,抢雅思考位似的。去年我记得用自动刷新的脚本非常容易的搞到了GNIB和re-entry的预约。今年超级奇怪的是,即使用半自动化的刷新,刷到的slot瞬间就被抢走。直到今天看到Irish times的报道,有专门的团队在运作,预约费用10-25不等。

一怒之下加了自动识别是否有slot的几行代码,于是马上就刷到一个。原理比较简单,就是用python模拟鼠标点网页,根据颜色判断是否有新的slot, 有的话就直接点book, 然后就是自己点提交和人类验证。这个方法很low, 高级的方法可以在后台自动刷新,自动获取验证码,加入机器学习可以自动识别验证码,最后自动表单。 高级的办法只是有个头绪,做起来其实不难,只是不可能有时间去实现的,还是搞Paper重要。

具体步骤:

1. 电脑装Python3+,然后装 pyautogui和Pillow的模块

2. 打开GNIB预约的网站,把信息填好

3. 把鼠标放到寻找最近时间的按钮上,cmd中运行pyautogui.position()获取当前鼠标位置。获取鼠标位置的时候鼠标不能动!程序模拟你按键会在这个pixel的位置点击,已到达自动刷新的目的。

4. 如果出现可以book的slot, 那么这个地方会有一个绿色的按钮。你需要把鼠标放到这个按钮可能出现的位置,然后或者当前鼠标位置。获取鼠标位置的时候鼠标不能动!程序会自动capture这个pixel的颜色,如果不是绿色继续点点点,如果是绿色就点这个pixel位置。如果运气超级差,你获取的鼠标位置正好时在绿色按钮的白字上,就没办法自动预定了。。。

关于这一点,其实可以更暴力一点,不用判断直接点,相当于只点两个地方,这样做的缺点是程序不能自动停止,在你去关程序,自己提交的时候,就被别人捷足先登了。

5. 代码中填入点击的坐标(3 里面获取的鼠标位置,替换(35,418)

和判断的坐标(4里面获取的鼠标位置,替换(33,450)

import time

import pyautogui

from PIL import ImageGrab

target=(92,184,92)

a=1

while a==1:

pyautogui.moveTo(35,418)

pyautogui.click()

time.sleep(1)

image=ImageGrab.grab()

color=image.getpixel((33,450))

if target==color:

pyautogui.moveTo(33,450)

pyautogui.click()

break

6. 一切准备就绪,运行code。

注意

a.需要自己点提交和手动验证

(当然也可以自己加自动提交和验证的功能,只是觉得自己用没必要)

b.获取鼠标位置时或者运行代码时请保持网页位置不变

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908G038OQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券