我目前正在玩Mr. Mine,我懒得每1~2分钟点击一次'sell'。
我可以使用一个鼠标宏程序,我可以让计算机为我做点击,但这听起来像一个不雅的方法。
我正在考虑某种方法,我可以编写一个代码,该代码将在打开网络游戏的情况下侵入网络浏览器,并以某种方式向将出售矿物的服务器发送某种“请求”。
我的意思是,毕竟,手动单击它最终会向服务器发送一些请求,那么为什么不通过预编程代码发送呢?
我知道我的问题很广泛,所以让我问几个问题,这些问题可以引导我开始我的项目。
我想看看源代码。 (就算不是Mr.Mine也没关系,其他网页游戏也有帮助)
另外,我目前对python很感兴趣,所以如果python中有任何例子,我会非常感激。
更新:“我已经解决了这个问题”
我只是在写我是如何解决这个问题的,以防万一其他刚开始 Mr.Mine 的人面临和我一样的懒惰。
事实证明,Mr.Mine 实际上并没有与其服务器交换数据包。它只使用互联网连接来初始加载图像和所有这些。(我认为是..)
如果你右击Mr.Mine 网页并查看它的html 代码,你会发现它充满了javascripts。
在粗略地阅读了这些 javascript 之后,我认为这个游戏不太依赖数据包数据的理论变得更有说服力了。
无论如何,这就是为什么我从 javascript 的角度来解决我的问题,我终于找到了解决方案
您需要做的是利用 chrome 的开发人员工具。(我是 chrome 用户)
您也可以通过以下方式访问此工具:从 mr.mine 网页,右键单击任意位置 -> 单击最后一个按钮。然后你会在屏幕底部看到一些面板弹出。
该工具使您能够摆弄其中的 html 代码或 javascript。
我也不擅长这个,因为这是我第一次将它实际用于实际目的。
我只是通过谷歌搜索来满足我的需求,从而获得了足够的知识。
在这个新面板的顶部菜单栏中,最右侧有“控制台”选项卡。
单击此按钮,您将看到一个命令控制台。
这是您可以在网页的 javascript 中执行 java 命令的地方。
好吧,从这里开始,它与“先生”有关。
从我之前对 javascript 的粗略阅读中,我发现卖出按钮的 ID 为“SB2”、“SB3”、“SB4”等。
所以我所做的只是输入
setInterval(document.getElementById("SB2").onclick, 300);
在命令行并按下回车键。
此命令将每 0.3 秒自动按下 SB2 按钮(对应于“煤炭”)。
*注意:执行此代码时,您必须打开“销售”页面。我发现如果“销售”页面没有打开,代码就不起作用。
*Caution2:还有一个有趣的事情是,即使在'sell'页面,如果你转到'sell isotope'页面,它会自动出售Uranium 238。这是因为SB2按钮对应'sell isotope'选项卡中的Uranium 238。所以要小心!
*注意3:如果你这样做,一个错误弹出窗口会不断出现。我刚刚启用了“从不显示此弹出窗口”复选框,之后它就可以正常工作了。但是有一个副作用:按下“保存”按钮后出现的通常弹出窗口不再出现......但它值得牺牲不是吗?
无论如何,如果您想自动出售其他矿石,您所要做的就是输入类似的代码,例如:
setInterval(document.getElementById("SB3").onclick, 300);
setInterval(document.getElementById("SB4").onclick, 300);
... 等等。
看到只是更改“SB”之后的数字对应于列表中的下一个矿石(同位素)。
好吧,感谢您阅读了这么多,我希望其他 Mr.Mine 用户可以通过这种技术发挥创造力并做更多事情。
最佳答案
您可以使用数据包捕获工具,例如 wireshark .计算出游戏发送到服务器的格式和数据。
一旦您了解了结构,您就可以编写脚本来拦截您的游戏流量,添加所需的参数并定时发送请求。 (这一切都假设它确实加密了它的网络流量,在这种情况下这可能会有点困难)
您可以通过 this 找到更多信息搜索。
关于python - 我如何编写一个宏来为我在网页游戏中进行点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832572/