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.获取鼠标位置时或者运行代码时请保持网页位置不变
领取专属 10元无门槛券
私享最新 技术干货