如何通过自定义.exe打开指定URL,实现Python游戏对接Infinity Free数据库?
解决方案:通过HTTP API接口实现游戏与数据库的交互
首先明确:Infinity Free的数据库防火墙是基于服务器IP限制的,只有同主机上的脚本(比如你的网站PHP文件)才能访问数据库,不管你用exe还是浏览器发起请求,只要是从外部IP过来的,都没法直接连数据库。你想通过exe伪装成内部访问的思路行不通,因为平台判断的是请求来源IP,不是客户端类型。
可行的做法是在你的网站上搭建一套PHP API接口,游戏通过HTTP请求调用这些接口来实现数据库操作,流程是:
- 游戏(Python写的,打包成exe)发起HTTP请求(POST/GET)到你的网站PHP接口
- PHP接口在服务器内部执行,直接访问数据库(因为是同服务器,平台允许)
- PHP接口把操作结果(比如账号验证、数据读取/写入)返回给游戏
- 游戏根据返回结果做相应处理
针对你之前遇到的「PHP和HTML导入被阻止」的问题,应该是你调用PHP的方式不对——你需要把PHP文件部署在你的Infinity Free网站上,然后通过URL请求它,而不是本地导入PHP代码。
具体实现步骤
编写PHP接口示例
比如写一个用户登录验证的接口login.php,放在你的网站根目录:<?php // 数据库连接参数(Infinity Free后台可获取) $host = 'localhost'; $dbname = '你的数据库名'; $username = '你的数据库用户名'; $password = '你的数据库密码'; // 获取游戏传来的参数 $user = $_POST['username']; $pass = $_POST['password']; // 连接数据库 $conn = new mysqli($host, $username, $password, $dbname); if ($conn->connect_error) { die(json_encode(['status' => 'error', 'msg' => '数据库连接失败'])); } // 防注入的用户查询 $stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $user, $pass); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { echo json_encode(['status' => 'success', 'msg' => '登录成功']); } else { echo json_encode(['status' => 'error', 'msg' => '账号或密码错误']); } $stmt->close(); $conn->close(); ?>Python游戏中调用接口
用requests库发起POST请求,不需要打开浏览器,直接在Python代码里请求:import requests def login(username, password): # 你的网站域名 + 接口路径 url = 'https://你的域名/login.php' data = { 'username': username, 'password': password } try: response = requests.post(url, data=data) result = response.json() if result['status'] == 'success': print("登录成功") # 后续处理游戏逻辑 else: print(result['msg']) except Exception as e: print(f"请求失败: {str(e)}") # 调用示例 login('test_user', 'test_pass')打包成exe
用pyinstaller把Python游戏打包成独立exe,命令:pyinstaller --onefile your_game.py打包后的exe可以直接运行,发起的HTTP请求会被Infinity Free正常处理——因为请求的是你的网站接口,而接口本身是服务器内部访问数据库。
注意事项
- 敏感数据(比如密码)一定要用POST请求传递,不要用GET,避免数据暴露在URL里
- PHP接口必须做参数校验和防注入处理,比如用预编译语句,防止SQL注入攻击
- 临时玩家数据可以在数据库中创建专门的临时表,通过接口实现创建、读取、删除逻辑
- Infinity Free有请求频率限制,不要发起过于频繁的请求,否则可能会被平台拦截
内容的提问来源于stack exchange,提问作者Dinorigami
相关产品推荐
相关产品推荐

