检查网站重定向,以编程方式

5
在我的国家,许多网站会被审查和屏蔽,并被重定向到某个页面。我不知道他们是如何做到的,但是否可能通过编程的方式确定一个网站是否被屏蔽或未被屏蔽,而不需要加载整个网站?我想这样做的原因是使用 Web 搜索 API(可能是 Google 的)并创建一个仅提供未被屏蔽结果的 Web 服务。如果有帮助的话,替代加载的页面内容如下:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256"><title>M3-5
</title></head><body><iframe src="http://10.10.34.34?type=Invalid Site&policy=MainPolicy " style="width: 100%; height: 100%" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0"></iframe></body></html>

我明白运行该服务的服务器需要拥有我的国家IP。

最好能使用PHP或Python实现这一点。

非常感谢任何帮助或想法。


4
如果被封锁的网站返回 301 状态码,也许你可以发送一个 HEAD 请求,检查它是否是 301 状态码。如果是,那么你可以进一步检查它是否包含“无效网站”这个信息。这样可以节省加载所有未解锁页面的时间。有些已解锁的网站也会返回 301 状态码。 - dm03514
好的,我检查了一些被屏蔽的网站。它们中的大部分都返回了301。其中一个返回了302。但是例如facebook.com没有返回任何内容(是的,在这里被封锁了!),flickr.com则返回了200。你有什么线索吗? - Auxiliary
1个回答

3
这在PHP和Python中都是完全可能的。基本上,您想要向相关网站发出http请求,然后分析收到的响应。请查看 PHP的cURL Python的Pycurl以了解如何发出http请求以及如何处理响应。
一旦您收到响应,就只需要将模式与可靠的封锁网站模式进行匹配。我第一个猜测是您可以在响应中查找<body><iframe src="http://10.10.34.34?type=Invalid Site,但是您必须检查更多被封锁的页面以查看它们是否都包含该字符串。如果例如IP或类型查询字符串参数因一个被封锁的网站而异,则您可能最终需要扩大检查范围到特定正则表达式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接