gpt4 book ai didi

php - 重定向后获取主机的IP地址和HTTP状态

转载 作者:行者123 更新时间:2023-12-02 14:05:08 26 4
gpt4 key购买 nike

我正在构建一个小的Web应用程序,它将对一系列域进行ping操作并返回其状态,让我监视它们的运行状态(是否启动或关闭),指向正确的服务器等(live example that may or may not be working)。

我开始使用exec("ping -n 3 -w 3 {$_POST['host']}", $output, $status);,现在使用exec("traceroute -w 1 {$_POST['host']}", $output, $status);并获取最后一个$output并在那里匹配IP。

除了我注意到它没有遵循301重定向等之外,这在大多数情况下都有效。

例如,在myrayhawk.com上的traceroute产生如下内容:

 1  192.168.1.1 (192.168.1.1)  0.495 ms  0.683 ms  0.911 ms
2 10.71.96.1 (10.71.96.1) 32.220 ms 55.987 ms 57.109 ms
3 ip68-4-12-93.oc.oc.cox.net (68.4.12.93) 58.231 ms 59.353 ms 60.424 ms
4 68.4.15.242 (68.4.15.242) 72.339 ms 73.451 ms 74.641 ms
5 ip68-4-11-16.oc.oc.cox.net (68.4.11.16) 76.265 ms 77.383 ms 79.591 ms
6 ip68-4-11-94.oc.oc.cox.net (68.4.11.94) 143.201 ms 18.749 ms 41.717 ms
7 langbprj01-ae1.rd.la.cox.net (68.1.1.13) 42.843 ms 43.971 ms 68.194 ms
8 reserved.metro.la.ipv4.godaddy.com (206.223.123.32) 45.094 ms 70.501 ms 69.329 ms
9 ip-97-74-253-94.ip.secureserver.net (97.74.253.94) 71.622 ms 72.754 ms 74.844 ms
10 ip-97-74-253-94.ip.secureserver.net (97.74.253.94) 108.322 ms 112.058 ms 109.446 ms

11 ip-97-74-253-98.ip.secureserver.net (97.74.253.98) 110.589 ms 37.376 ms 38.861 ms
12 ip-97-74-254-134.ip.secureserver.net (97.74.254.134) 68.868 ms 70.791 ms 72.282 ms
13 ip-184-168-86-185.ip.secureserver.net (184.168.86.185) 82.400 ms 76.183 ms 78.540 ms

但是在 rayhawk.com上做同样的事情,因为我知道那里有一个301重定向:
 1  192.168.1.1 (192.168.1.1)  0.738 ms  0.868 ms  1.174 ms
2 10.71.96.1 (10.71.96.1) 95.723 ms 119.914 ms 122.994 ms
3 ip68-4-12-89.oc.oc.cox.net (68.4.12.89) 123.558 ms 124.115 ms 124.679 ms
4 68.4.15.240 (68.4.15.240) 127.319 ms 127.933 ms 128.523 ms
5 ip68-4-11-16.oc.oc.cox.net (68.4.11.16) 126.672 ms 132.373 ms 131.802 ms
6 ip68-4-11-94.oc.oc.cox.net (68.4.11.94) 130.986 ms 65.913 ms 64.542 ms
7 langbprj01-ae1.rd.la.cox.net (68.1.1.13) 89.395 ms 88.751 ms 88.113 ms
8 reserved.metro.la.ipv4.godaddy.com (206.223.123.32) 97.840 ms 89.999 ms 90.593 ms
9 po36.trma0202-01.bbn.mgmt.phx3.gdg (216.69.188.33) 98.454 ms 99.034 ms 115.921 ms
10 po36.trma0202-01.bbn.mgmt.phx3.gdg (216.69.188.33) 114.698 ms 114.032 ms 115.263 ms
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *

我尝试使用 wget --spider hostname.com,但是 wget不喜欢在php exec()调用中很好地工作。

在纯SSH中执行 wget时,我得到:
Resolving rayhawk.com... 72.167.131.159
Connecting to rayhawk.com|72.167.131.159|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.rayhawk.com/ [following]
Spider mode enabled. Check if remote file exists.
--2012-04-12 11:37:42-- http://www.rayhawk.com/
Resolving www.rayhawk.com... 72.167.131.159
Connecting to www.rayhawk.com|72.167.131.159|:80... connected.
HTTP request sent, awaiting response... 200 OK

然后可以解析出我想要的东西。

如何在PHP中解析主机的最终位置并检索其HTTP状态代码?

最佳答案

我写了一篇博客文章,介绍如何获取可能发生的HTTP重定向的痕迹,它附带一些代码示例:

  • HEAD first with PHP Streams + Updated codepad viper example
  • http://example.com/的示例输出:
    Status code (after all redirects): 200
    Number of responses: 2 (1 Redirect(s))
    * http://example.com/ -- 302 --> http://www.iana.org/domains/example/

    您可以在 the answer to a related question HTTP response code after redirect中找到有关代码的更深入的讨论。

    关于php - 重定向后获取主机的IP地址和HTTP状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129761/

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