超级跑跑吧 关注:82,091贴子:2,361,670

使用python自动化刷图/钓鱼(前瞻)

只看楼主收藏回复

我竟然也是老东西了,爆个金币先


IP属地:日本1楼2023-04-09 21:27回复
    这个前瞻贴我会简单讲一下方案的设计思路,如果吧U反馈不错的话就把源码发出来,没啥反响的话就当“技术”交流了(技术打上双引号是因为这玩意也不怎么需要技术(


    IP属地:日本2楼2023-04-09 21:32
    回复
      众所周知,超级跑跑为了不让玩家用简单的脚本实现自动刷急速拼图,不知道什么时候加上了个验证码机制,输不对验证码直接强制掉线。现有的免费/付费脚本能不能绕过这个机制我不清楚,就算有我也不敢去轻易使用,不开源工作原理不好说有没有封号的风险。
      恰好楼主稍微接触过python,就想到可以利用python去解决这个问题,写一个可以自动输对验证码的小程序来应对这个机制。还好这游戏的验证码图案并不复杂,只需要做简单的图像处理就可以做到轻松识别


      IP属地:日本3楼2023-04-09 21:40
      回复
        进入正题前先说说用python解决的好处:
        1)几乎没有封号可能(既不修改也不读取游戏进程);
        2)python有很多现成且的包可以拿来直接用,写起来也不费事;
        3)知根知底,知道没有病毒不用提心吊胆;
        4)可以发到贴吧上装13


        IP属地:日本4楼2023-04-09 21:48
        回复
          接下来讲讲我用到的python包,毕竟用python就是为了能直接站在大佬的肩膀上


          IP属地:日本5楼2023-04-09 21:50
          回复
            2)pydirectinput
            具体为什么pyautogui不能在游戏里用可以自己上百度搜索,总之需要用这个包来实现自动化控制键鼠的功能。pydirectinput的设计初衷就是为了解决pyautogui不能在游戏里操控键鼠这个问题的,所以直接用pydirectinput的函数(moveTo(),click()等)代替pyautogui的就行了


            IP属地:日本7楼2023-04-09 22:00
            回复
              3)cv2(opencv)
              处理图像用的,主要是用来处理验证码使其更好被识别。
              不需要太复杂的处理,简单去色加二元化就好了。
              原图:

              处理后:


              IP属地:日本8楼2023-04-09 22:12
              回复


                IP属地:上海来自iPhone客户端9楼2023-04-09 22:18
                回复
                  4)ddddocr
                  带带弟弟OCR通用验证码识别,一个大佬在github上的开源项目,宝贵之处在于人家连训练都帮你训练好了,你直接用现成的模型就行。
                  直接用原图进行识别的成功率有点感人,但是简单二元化处理之后几乎能做到100%成功(而且就算不成功也可以重来,问题不大),配合pyautogui + pydirectinput实现自动化输入验证码


                  IP属地:日本10楼2023-04-09 22:19
                  回复
                    5)其他
                    time:可以用这个包判定时间,虽然不是很必要。重要的是可以用sleep()给操作之间加个间隔;
                    numpy和PIL是必须要装的,装cv2和pyautogui的时候应该会顺带给你一起装了。pyautogui的图片格式用的是PIL的,所以用PIL截图传给cv2之前要转换颜色格式(笨方法是直接把截图保存在文件夹,再用cv2去imread)


                    IP属地:日本11楼2023-04-09 22:59
                    回复
                      总之解决思路就是这些:
                      判定时机用pyautogui,
                      自动操作键鼠用pydirectinput,
                      解决验证码用cv2(去色+二元化)+ddddocr(识别),
                      剩下的都是一些很简单的逻辑了


                      IP属地:日本12楼2023-04-09 23:07
                      回复
                        自动钓鱼的道理也差不多,因为自动钓鱼最大的问题是背包会满,所以只需要自动化一下收背包这个过程就好。
                        这个过程有聪明办法也有笨办法


                        IP属地:日本13楼2023-04-09 23:08
                        回复
                          聪明办法是做图像识别(识别边缘/阴影化/etc),这个实现起来还是有点难度的;
                          万幸的是,收背包的验证图并不多,一共就十几种鱼,所以用笨办法把所有的鱼图案(本体+阴影)都截图喂给pyautogui穷举就完事了


                          IP属地:日本14楼2023-04-09 23:11
                          回复
                            总之大概就是这样,欢迎大佬来讨论讨论感想


                            IP属地:日本15楼2023-04-09 23:11
                            回复
                              说下用python搞自动化的一些些弊端吧:
                              1)游戏界面必须要在最前一层而且关键图案不能被其他的窗口遮挡,无法做到最小化在后台自动跑图/钓鱼而且有点害怕弹窗,所以只适合不用电脑的时候挂(当然这也是优点,因为不读取/修改游戏程序也不拦截/发送网络封包,所以几乎没有封号风险);
                              2)pyautogui的速度不快(或者说用python基本跟速度无缘了),做个简单的loop都慢得很,键盘连点的实现效果很差,有高性能需求还得写多进程,麻烦得很;
                              3)pydirectinput必须以管理员权限运行


                              IP属地:日本17楼2023-04-10 17:58
                              回复