[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[网络连接] 批处理怎么检测一个网页能否打开?

我想要一个批处理检测网站的一个页面能不能打开,不能打开就给出提示。

举个例子,如 http://www.163.com  当这个网站的首页打不开就提示打不开。

注意:不是检测服务器打开不,有时候服务器是好的,能ping通。但网站故障网页会打不开

类似如下面:
  1. @echo off
  2. ping -n 1 www.163.com 1>nul  2>nul&&echo 服务器连接正常||echo 服务器连接不正常
  3. pause
复制代码
这个是检测服务器连接。我想要检测页面是否正常打开。

具体有思路是找到网页中的某个特定字符串,如“网易”,就证明可以打开。否则就打不开页面。但我不知道怎么实现

请高手指导一下,谢谢。

  1. curl -I "http://www.163.com"
复制代码
判断一下HTTP状态是不是200
测试代码之前请做好备份

TOP

本帖最后由 zb848 于 2017-5-9 16:40 编辑
判断一下HTTP状态是不是200
ShowCode 发表于 2017-5-9 13:44




这个不对啊

在批处理中怎么接收这个返回码?


能不能写个全的批处理,谢谢!

TOP

回复 3# zb848
  1. @echo off
  2. for /f %%i in ('curl -so /dev/null -w %%{http_code} http://www.163.com') do (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9. )
  10. pause
复制代码
测试代码之前请做好备份

TOP

回复 2# ShowCode


    有没有口能是 304

TOP

回复  zb848
ShowCode 发表于 2017-5-9 16:43



十分感谢!

TOP

回复 5# CrLf


    有的话,应该检测304之后的页面。
测试代码之前请做好备份

TOP

本帖最后由 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
(注:这是个内网地址。外网是无法访问的)
这个页面地址含有%字符。

  1. 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

可是用你的代码
  1. @echo off
  2. 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 (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9.     echo 是%ret%
  10. )
  11. 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.

请问题出在那?谢谢

TOP

回复 8# zb848


你用了SSO单点登录吧,它会发生302重定向,正常的。

能直接访问这个吗:
http://portal.hngs.tax.cn/welcome.html
测试代码之前请做好备份

TOP

curl 应该也可以设置跟随转。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 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

可能是语句中的%有问题,怎么解决

TOP

curl 应该也可以设置跟随转。
codegay 发表于 2017-5-10 10:01



怎么设置跟随转?

TOP

回复 12# zb848


    -L, --location       Follow redirects (H)
然而这个应该不能处理用 js 控制的跳转

TOP

回复 8# zb848


你自己的curl命令保存到bat文件里面能得到200吗?分别试试:

test1.bat
  1. 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
  2. pause
复制代码
test2.bat
  1. 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
  2. pause
复制代码
测试代码之前请做好备份

TOP

本帖最后由 zb848 于 2017-5-10 11:45 编辑
回复  zb848


你自己的curl命令保存到bat文件里面能得到200吗?分别试试:

test1.battest2.bat
ShowCode 发表于 2017-5-10 10:59





单独在cmd中运行第一个返回200,第二个返回302




在批处理文件中运行批处理报错



运行下面代码
  1. @echo off
  2. 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 (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9.     echo 是%ret%
  10. )
  11. echo.
  12. @echo off
  13. 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 (
  14.     set ret2=%%p
  15. )
  16. if %ret2% equ 200 (
  17.     echo 是200
  18. ) else (
  19.     echo 不是200
  20.     echo 是%ret2%
  21. )
  22. pause
复制代码
结果都是50000

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

返回列表