我需要通过不同的ISP监控网站列表,看看它们是否被阻止。我为每个ISP都有一台不同的机器。我正在尝试编写代码来自动检查网站是否被阻止。我想到了一些事情,但是由于不同的原因它们不起作用:
ping:我以为我会ping网站但是有些网站的ICMP端口已经关闭了。
获取请求(或javascript image trick):我想也许我只是获取网页,但这无济于事,因为被阻止的页面仍会返回一些非标准的阻塞页面。 200状态。
最后,我想也许我在一台非封锁的机器上得到了一个网站的副本,并将该页面与测试机器上的页面进行比较,但有两个问题:我不知道如何比较两个页面(比如什么我会比较一下这个元素)其次,有些网站是动态的,因此它们的版本略有不同。
任何想法都会有所帮助。
答案 0 :(得分:1)
我猜测无论您尝试访问哪个站点,ISP阻止页面都与该ISP一致。不是将检索到的页面与“已知的真实”页面进行比较,而是将其与“已知的错误”页面进行比较呢?
下行:您必须为每个ISP重复此过程,因为它们几乎肯定会有不同的“阻止”页面。
答案 1 :(得分:0)
两个选项:
比较页面大小。如果两个页面的大小非常相似,那么您就知道ISP可能没有阻止该站点。如果一个页面的大小非常小,那么ISP可能会阻止该网站。
从页面中抓取元素,例如标题,标题,按钮文本等,并将它们相互比较。如果您有x匹配,则该页面可能不会被阻止,如果您没有匹配,则该页面可能会被阻止。
答案 2 :(得分:0)
存储被阻止网站页面的模板。
对于每个GET responseBody,检查其内容是否与阻止的模板匹配。
如果防火墙强制重定向,您可以检查响应服务器的IP / DNS是否等于防火墙。