84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
大家都是用什么方法.
程序是python写的.
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
用socket连下大网站的80端口不就行了。
1、 ping 的话可能会并网关屏蔽掉,比如我们这里2、80 端口,有些需要认证的网络,比如 ChinaUnicom的 wifi,登录之前会把所有的 80 端口DNAT然后重定向到登录页面,导致误判。3、 443 端口,一般认证的网络不会对这个端口 DNAT,即使做了,也会导致证书错误,国内 HTTPS 网站不多,而且百度正常情况下也会有 证书错误。
ping
80
ChinaUnicom
DNAT
443
HTTPS
所以建议 wget/curl 某个有固定内容的 HTTP 页面,比如 http://example.com/(这个域名真的存在),然后判断其中的内容,如果检测到不同还可以提示用户"您所在的网络可能需要登录才能使用"。而且即使判断错了也与用户的体验一样。
wget/curl
HTTP
http://example.com/
ping www.baidu.com
如何检测他是否连接到外网,这个问题本身很难解决,因为你无法定义“连接到外网”。所以只有针对性的做法:
这是任天堂3DS的做法:get 这个域名conntest.nintendowifi.net。如果打得开,返回This is test.html page,那么3DS就认为自己联网的。整个流程包括了域名解析和http 80请求。
至于不同的环境都有不同。比如哪天万一conntest.nintendowifi.net被墙了,被禁了,这个方法就不生效。某些网络禁ping,ping方法也不生效。
直接执行命令 ping 或者其他?
ping 命令
例ping www.sina.com,查看丢包率。
wget个文件,检查大小
著名的 curl ifconfig.me
curl ifconfig.me
就像浏览器上网一样,我们获取百度的首页的页面看看,有没有html字样,百度字样:
wget http://www.baidu.com/
会获取一个index的html。有成功,没有就没网。哈哈
用socket连下大网站的80端口不就行了。
1、
ping
的话可能会并网关屏蔽掉,比如我们这里2、
80
端口,有些需要认证的网络,比如ChinaUnicom
的 wifi,登录之前会把所有的 80 端口DNAT
然后重定向到登录页面,导致误判。3、
443
端口,一般认证的网络不会对这个端口DNAT
,即使做了,也会导致证书错误,国内HTTPS
网站不多,而且百度正常情况下也会有 证书错误。所以建议
wget/curl
某个有固定内容的HTTP
页面,比如http://example.com/
(这个域名真的存在),然后判断其中的内容,如果检测到不同还可以提示用户"您所在的网络可能需要登录才能使用"。而且即使判断错了也与用户的体验一样。ping www.baidu.com
如何检测他是否连接到外网,这个问题本身很难解决,因为你无法定义“连接到外网”。
所以只有针对性的做法:
这是任天堂3DS的做法:
get 这个域名conntest.nintendowifi.net。如果打得开,返回This is test.html page,那么3DS就认为自己联网的。
整个流程包括了域名解析和http 80请求。
至于不同的环境都有不同。比如哪天万一conntest.nintendowifi.net被墙了,被禁了,这个方法就不生效。
某些网络禁ping,ping方法也不生效。
直接执行命令 ping 或者其他?
ping 命令
例ping www.sina.com,查看丢包率。
wget个文件,检查大小
著名的
curl ifconfig.me
就像浏览器上网一样,我们获取百度的首页的页面看看,有没有html字样,百度字样:
会获取一个index的html。有成功,没有就没网。哈哈