C# IP数据查找-C

C# IP数据查找-C,c#,web,automation,ip,lookup,C#,Web,Automation,Ip,Lookup,好吧,我已经在谷歌上搜索过好几次了,但每一次都提出了一些体面的选择,比如:Selenium,它运行良好,但如果没有firefox,甚至据我所知,在API中都无法使用 我有以下代码: public byte[] GetFileViaHttp(string url) { using (WebClient client = new WebClient()) { return client.Download

好吧,我已经在谷歌上搜索过好几次了,但每一次都提出了一些体面的选择,比如:Selenium,它运行良好,但如果没有firefox,甚至据我所知,在API中都无法使用

我有以下代码:

 public byte[] GetFileViaHttp(string url)
        {
            using (WebClient client = new WebClient())
            {
                return client.DownloadData(url);
            }
        }
        byte[] result = GetFileViaHttp(@"http://ip-lookup.net/");
        string str = Encoding.UTF8.GetString(result);
        richTextBox1.Text = str;
然后我还有这个代码:

 public byte[] GetFileViaHttp(string url)
        {
            using (WebClient client = new WebClient())
            {
                return client.DownloadData(url);
            }
        }
        byte[] result = GetFileViaHttp(@"http://ip-lookup.net/");
        string str = Encoding.UTF8.GetString(result);
        richTextBox1.Text = str;
工作正常,返回我的IP信息,但我想用其他IP地址自动执行此操作,而不是返回我自己的IP地址。 如何做到这一点? 我的意思是,我希望API采用txtBox1.Text IP并将详细信息打印到richTextBox1.Text Host/Country中


如何做到这一点?

我查看了整个网站,发现了一个帮助文档,详细介绍了您想要的内容

只需将IP值作为未命名的查询字符串参数传递:

在代码中:

byte[] result = GetFileViaHttp(string.Format("http://ip-lookup.net?{0}", ipAddress));
将字符串ip地址作为ipAddress注入

你可以找到他们的帮助页面。我找了一份法律协议,但找不到,所以请自行决定是否使用

更新:

如果得到403,则需要传递一个用户代理头。您的WebClient实例可以修改为在请求中包含标头

public byte[] GetFileViaHttp(string url)
{
    using (WebClient client = new WebClient())
    {
        client.Headers.Add("User-Agent: Other");    
        return client.DownloadData(url);
    }
}

最有可能的方法是将IP地址与GetFileViaHttp调用一起传递。然而由于它是一个外部资源,您可能应该检查他们是否有任何文档,1告诉您如何操作,2为您提供以自动方式使用此API的合法权利。其他信息:远程服务器返回错误:403禁止。@Hellooo123我已修改我的答案以解决您的403问题问题。这是一个很好的答案,谢谢。进一步的问题是如何删除HTML信息?字符串。替换会很棘手。不客气。对于一个全新的线程来说,这是一个很好的问题。我会先研究一下Html敏捷包,如果你被卡住了,我会写一个新问题。