gpt4 book ai didi

c# - 如何检查 url 是否可公开访问?

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:18 24 4
gpt4 key购买 nike

我有一个 web 应用程序,您可以使用它通过给它一个 url 从另一个站点导入信息。有人指出,您可以使用此功能访问托管在同一网络服务器上的私有(private)网站。
所以……
我如何检查给定的 url 是否可以公开访问(无论是在同一网络服务器上还是在不同的地方)?

修复:我最终这样做了:

    protected static bool IsHostWithinSegment(string Host)
{
Ping pinger = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
PingOptions options = new PingOptions();
options.Ttl = 1;

PingReply reply = pinger.Send(Host, 1000, buffer, options);

return reply.Status == IPStatus.Success;
}

private static Uri BindStringToURI(string value)
{
Uri uri;
if (Uri.TryCreate(value, UriKind.Absolute, out uri))
return uri;

// Try prepending default scheme
value = string.Format("{0}://{1}", "http", value);
if (Uri.TryCreate(value, UriKind.Absolute, out uri))
return uri;

return null;
}

我唯一没有满足的要求是我们产品的某些安装将彼此并存,您将无法在它们之间导入信息 - 我怀疑这将需要使用代理服务器来获取对事物的外部看法,但由于这不是我的项目的要求,所以我会把它留给其他人。

-- 我刚刚意识到这确实完全解决了我的问题,因为所有可公开访问的 url 都解析为虚拟或可路由的 ip,这意味着它们会跳转。

最佳答案

运行 traceroute(一系列带有短 TTL 的 ping 地址,如果防火墙是其中一个跃点,那么它从组织外部可见,因此应该是可以接受的。

System.Net.NetworkInformation 有一个 ping 类,它应该为您提供足够的信息来进行 tracert 之类的例程。

虽然这听起来像是一个大洞,但或许应该考虑另一种方法。防止运行此程序的机器。访问内部网络上的任何其他机器可能更好 - 一种内部防火墙。

我添加了一个简单的跟踪路由,因为你喜欢这个概念:-

class Program
{
static void Main(string[] args)
{
PingReply reply = null;
PingOptions options = new PingOptions();
options.DontFragment = true;
Ping p = new Ping();
for (int n = 1; n < 255 && (reply == null || reply.Status != IPStatus.Success); n++)
{
options.Ttl = n;
reply = p.Send("www.yahoo.com", 1000, new byte[1], options);
if (reply.Address != null)
Console.WriteLine(n.ToString() + " : " + reply.Address.ToString());
else
Console.WriteLine(n.ToString() + " : <null>");
}
Console.WriteLine("Done.");
System.Console.ReadKey();
}
}

对于可靠的本地网络应该足够好。

关于c# - 如何检查 url 是否可公开访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com