标题: [网络连接] 批处理怎么检测一个网页能否打开? [打印本页]
作者: zb848 时间: 2017-5-9 13:08 标题: 批处理怎么检测一个网页能否打开?
我想要一个批处理检测网站的一个页面能不能打开,不能打开就给出提示。
举个例子,如 http://www.163.com 当这个网站的首页打不开就提示打不开。
注意:不是检测服务器打开不,有时候服务器是好的,能ping通。但网站故障网页会打不开
类似如下面:- @echo off
- ping -n 1 www.163.com 1>nul 2>nul&&echo 服务器连接正常||echo 服务器连接不正常
- pause
复制代码
这个是检测服务器连接。我想要检测页面是否正常打开。
具体有思路是找到网页中的某个特定字符串,如“网易”,就证明可以打开。否则就打不开页面。但我不知道怎么实现
请高手指导一下,谢谢。
作者: ShowCode 时间: 2017-5-9 13:44
- curl -I "http://www.163.com"
复制代码
判断一下HTTP状态是不是200
作者: zb848 时间: 2017-5-9 14:33
本帖最后由 zb848 于 2017-5-9 16:40 编辑
判断一下HTTP状态是不是200
ShowCode 发表于 2017-5-9 13:44
这个不对啊
在批处理中怎么接收这个返回码?
能不能写个全的批处理,谢谢!
作者: ShowCode 时间: 2017-5-9 16:43
回复 3# zb848 - @echo off
- for /f %%i in ('curl -so /dev/null -w %%{http_code} http://www.163.com') do (
- set ret=%%i
- )
- if %ret% equ 200 (
- echo 是200
- ) else (
- echo 不是200
- )
- pause
复制代码
作者: CrLf 时间: 2017-5-9 17:00
回复 2# ShowCode
有没有口能是 304
作者: zb848 时间: 2017-5-9 17:07
回复 zb848
ShowCode 发表于 2017-5-9 16:43
十分感谢!
作者: ShowCode 时间: 2017-5-9 19:41
回复 5# CrLf
有的话,应该检测304之后的页面。
作者: zb848 时间: 2017-5-10 08:15
本帖最后由 zb848 于 2017-5-10 08:22 编辑
现在又遇到 个问题
我有一个页面,http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
(注:这是个内网地址。外网是无法访问的)
这个页面地址含有%字符。
用- curl -I -m 10 -o /dev/null -s -w %{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
复制代码
返回的是200
可是用你的代码- @echo off
- for /f %%i in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html') do (
- set ret=%%i
- )
- if %ret% equ 200 (
- echo 是200
- ) else (
- echo 不是200
- echo 是%ret%
- )
- pause
复制代码
返回的总是500000
我试着将地址http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html 中的%改成%%也是500000。将%2F改成/,%3A改成:结果返回302.
请问题出在那?谢谢
作者: ShowCode 时间: 2017-5-10 09:44
回复 8# zb848
你用了SSO单点登录吧,它会发生302重定向,正常的。
能直接访问这个吗:
http://portal.hngs.tax.cn/welcome.html
作者: codegay 时间: 2017-5-10 10:01
curl 应该也可以设置跟随转。
作者: zb848 时间: 2017-5-10 10:18
本帖最后由 zb848 于 2017-5-10 10:21 编辑
回复 9# ShowCode
访问这个地址,http://portal.hngs.tax.cn/welcome.html
也是跳到这个地址http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
用你的代码curl也是302
可能是语句中的%有问题,怎么解决
作者: zb848 时间: 2017-5-10 10:22
curl 应该也可以设置跟随转。
codegay 发表于 2017-5-10 10:01
怎么设置跟随转?
作者: CrLf 时间: 2017-5-10 10:32
回复 12# zb848
-L, --location Follow redirects (H)
然而这个应该不能处理用 js 控制的跳转
作者: ShowCode 时间: 2017-5-10 10:59
回复 8# zb848
你自己的curl命令保存到bat文件里面能得到200吗?分别试试:
test1.bat- curl -I -m 10 -o /dev/null -s -w %{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
- pause
复制代码
test2.bat- curl -I -m 10 -o /dev/null -s -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html
- pause
复制代码
作者: zb848 时间: 2017-5-10 11:19
回复 zb848
你自己的curl命令保存到bat文件里面能得到200吗?分别试试:
test1.battest2.bat
ShowCode 发表于 2017-5-10 10:59
单独在cmd中运行第一个返回200,第二个返回302
[attach]10613[/attach]
在批处理文件中运行批处理报错
[attach]10614[/attach]
运行下面代码- @echo off
- for /f %%i in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html') do (
- set ret=%%i
- )
- if %ret% equ 200 (
- echo 是200
- ) else (
- echo 不是200
- echo 是%ret%
- )
-
- echo.
-
- @echo off
- for /f %%p in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html') do (
- set ret2=%%p
- )
- if %ret2% equ 200 (
- echo 是200
- ) else (
- echo 不是200
- echo 是%ret2%
- )
-
- pause
复制代码
结果都是50000
[attach]10615[/attach]
。
作者: zb848 时间: 2017-5-11 16:11
有人知道吗?
请高手指教
作者: zb848 时间: 2017-5-19 15:42
自己找到原因了
http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html
改成
{http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html}
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |