如何在统一 c# 中检测用户 IP 地址? [关闭]
Posted
技术标签:
【中文标题】如何在统一 c# 中检测用户 IP 地址? [关闭]【英文标题】:how to detect user ip address in unity c#? [closed] 【发布时间】:2021-11-15 13:46:58 【问题描述】:我必须创建一个使用 Unity API 检测用户 IP 地址的反黑客系统。有什么简单的方法可以解决吗?
我还需要检查播放器是否使用 *** 连接。所有这些都必须在 Unity 和 C# 中完成。帮助将不胜感激。谢谢
【问题讨论】:
好的,感谢您的帮助,我遇到了很多文档,但非常混乱。 对于IP,可以在here
找到答案。接受的答案是服务器 IP,而不是本地计算机 IP,因此请通读所有这些。
也只是为了澄清 - 我删除了我原来的评论,因为我链接了错误的帖子。
请提供足够的代码,以便其他人更好地理解或重现问题。
【参考方案1】:
您可以使用以下示例对其进行扩展和调整。并非所有 *** 服务都可以将其接口命名为“***”,但大多数会。您可以创建 Hyper-V 或虚拟机(或租用 VPS 服务器)并安装一些 *** 应用程序以查看它们的接口名称。
要获取公共 IP,您可以使用 WWWForm 或 UnityWebRequest 从统一调用一些免费的 Web API,它们会以 JSON 格式返回公共 IP。一个例子是https://www.ipify.org/ 或https://www.bigdatacloud.com/client-info-apis/public-ip-address-api
public IEnumerator ScanNetworkInterfaces()
while(Application.isPlaying && SM.CurrentState == GameManagerState.Intro)
bool found*** = false;
yield return new WaitForSeconds(2);
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
if (ni.OperationalStatus == OperationalStatus.Up)
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
if (ip != null && ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
// My addresses
if (ni.Description.ToLower().Contains("***"))
found*** = true;
yield return null;
yield return null;
if (found***)
MainMenuPanel.Instance.ShowWarning("Possibly detected a *** - you may need to disable it or game will disconnect immediately!");
else
MainMenuPanel.Instance.HideWarning();
【讨论】:
非常感谢。你是救命稻草。我会在这个线程上发布更新。 对于 ***,它就像一个魅力。但是有没有其他方法可以在不使用任何 SDK 的情况下检测 IP?【参考方案2】:从您的应用程序向您的服务器发送一个独特的请求,然后查看您在服务器上看到的请求的 IP。
对于第二个问题:您只能将 IP 与已知代理列表进行比较。
【讨论】:
以上是关于如何在统一 c# 中检测用户 IP 地址? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
服务器安全检测提示“关闭远程访问或限制访问的ip地址” 怎么关闭呢?阿里云的服务器