返回列表 发帖

[网络连接] [代码征集]网站屏蔽批处理

大家都知道,利用hosts文件,可以达到屏蔽一些不受欢迎的网站.

代码要求:
1、能够添加需屏蔽的网站;
2、能够解除相应屏蔽的网站(最好可以显示已屏蔽的网站);

代码尽量简洁且配有解说;大家见仁见智,集思广益...

可能部分人不知道原理,
我先简单的说下
大家可以打开hosts文件看看(在C:\WINDOWS\system32\drivers\etc里面),如下
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhostCOPY
只要在最后一行后面加上
127.0.0.1       你想屏蔽的网址    (注意:有7个空格)      
就打不开了(对原理感兴趣的自己BAIDU下)
下面是我写的
@echo off&setlocal enabledelayedexpansion
:kaishi
echo.
echo.
echo.
echo.
echo 添加网址过滤请输入1;解除网址屏蔽请输入2;退出请按0;
set /p scanf=
if !scanf!==1 goto :pb else (
if !scanf!==2 goto:jc else
goto :end)
:pb
set /p str=请输入你想屏蔽的网址:
echo 127.0.0.1 !str!>>C:\WINDOWS\system32\drivers\etc\hosts
echo 网址!str!已经成功屏蔽!
pause & cls & goto :kaishi
:jc
set /p str=请输入你想解除屏蔽的网址:
for /f "delims=" %%a in (C:\WINDOWS\system32\drivers\etc\hosts) do echo %%a | findstr /v "!str!">>C:\WINDOWS\system32\drivers\etc\hosts1
del C:\WINDOWS\system32\drivers\etc\hosts /q
ren C:\WINDOWS\system32\drivers\etc\hosts1 hosts
pause & cls & goto :kaishi
:end
exitCOPY

[ 本帖最后由 novaa 于 2007-11-25 18:58 编辑 ]
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

哈哈
发现我写的好马虎
格式排版的也不好
本来想用CHOICE选择的,但是别人告诉,XP没有命令,。。。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

::知道这个原理就好办了。
::    但又要人性化,又要简洁,只怕有点难度。。。。
::         哈哈…… 代码 N 长…………

@echo off&color 0f&title 网址 屏蔽/解除屏蔽
:: by 小楼一夜听春雨 2007-11-25
set wjm=C:\WINDOWS\system32\drivers\etc
set "str=127.0.0.1       "&set "kg=                   "
set "tisi=echo\&echo %kg%注: 此操作需要经过杀毒软件的同意。"
set "tisi2=echo %kg%=================================="
set "yip=以下是已经被屏蔽的网址&echo ======================&echo\"
set "npb=目前没有被屏蔽的网址。&echo ======================&echo\&echo\&echo\"
set "tisi=%tisi%&%tisi2%&echo\&echo\"
:loop
setlocal EnableDelayedExpansion
call :xiansi
echo\&echo 请选择 { 1 屏蔽网址 } { 2 解除屏蔽 } { 3 全部解除屏蔽 }&echo\
set /p xuan=请选择 [ 123 ]
if "%xuan%"=="" (set xuan=a) else set xuan=%xuan:"=%
if "%xuan%"=="1" goto jia
if "%xuan%"=="2" goto _jiecu
if "%xuan%"=="3" set pinbi3=y&goto _jiecu
call :cuowu
endlocal
goto loop
:_jiecu
cls&call :xiansi
if defined pinbi3 (
   for /l %%a in (1 1 %num%) do set wz=!wz! %%a
   goto jiecu
)
echo\&echo 输入已经屏蔽的网址前面的序号,解除屏蔽相应的网址。
echo\&echo 解除屏蔽,可一次输入多个序号,用空格分开。
echo\&echo 如:1 2 5 10 (即:解除12510
echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
set /p wz=请输入序号:
if "!wz!"=="" exit
set pand=!wz: =!
echo !pand!|findstr "^[0-9].*$"&&goto jiecu
call :cuowu
endlocal
goto loop
:jiecu
attrib -r %wjm%\hosts
color 1f
for /f "delims=" %%a in (%wjm%\hosts) do (
   set pin=
   for %%i in (%wz%) do if "%%a"=="!str!!%%i!" set pin=a
   if not defined pin echo %%a>>%wjm%\hosts1
)
set wz=&set "pinbi3="
del/q %wjm%\hosts
ren %wjm%\hosts1 hosts
del/q %wjm%\hosts1
attrib +r %wjm%\hosts
cls&echo\&echo 解除屏蔽成功。。。
endlocal
goto loop
:jia
cls&%tisi%
echo\&echo 请输入需要“屏蔽”的“单个”网址。
echo\&echo 或 先在“某文档”里输入所有要屏蔽的网址,一行一个。
echo\&echo 再在这里输入 “文档名” (含全路径和后缀名)
echo\&echo 或将此文档拖放到此,可批量添加。
echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
set /p wdm=请输入文档名或网址:
set wdm=%wdm:"=%
if "%wdm%"=="" exit
set wdm="%wdm%"
if exist %wdm% (set "wdm=type %wdm%") else (set "wdm=echo %wdm%")
attrib -r %wjm%\hosts
for /f "delims=" %%a in ('%wdm%') do (
   color cf&echo !str!%%a>>%wjm%\hosts
)
attrib +r %wjm%\hosts
cls&echo\&echo 屏蔽成功。。。
endlocal
goto loop
:xiansi
set you=&set xs=&set num=
for /f "tokens=1* delims= " %%a in (%wjm%\hosts) do (
   if "%%a"=="127.0.0.1" set /a xs+=1
   if !xs! geq 2 (
     if !xs! equ 2  %tisi%&echo %yip%&set you=a
     set /a num+=1
     set !num!=%%b&echo ^(!num!^) %%b
))
echo\
if not defined you %tisi%&echo %npb%
goto :eof
:cuowu
cls&echo\&echo  你的输入错误,请重新输入。。。&echo\
goto :eofCOPY

[ 本帖最后由 随风 于 2007-11-29 07:19 编辑 ]
2

评分人数

    • youxi01: PB + 6
    • novaa: 非常同意,功能全。好东西。PB + 4
技术问题请到论坛发帖求助!

TOP

N长,哈哈
不过人性化,
功能足
很不错的啊
向版主学习!
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

原帖由 随风 于 2007-11-25 23:22 发表
::知道这个原理就好办了。
::    但又要人性化,又要简洁,只怕有点难度。。。。
::         哈哈…… 代码 N 长…………
::@echo off&color 0f&title 网址 屏蔽/解除屏蔽
:: by 小楼一夜听春雨 2007-11-25
:lo ...


不错啊,加分鼓励.不过提点建议,标签或者封装的"函数"取名的时候最好是用英文好些,用中文的话,因为大多人采取的是拼音的方式,而且是简写的,所以到时可能会忘记标签原来的意义...

TOP

回复 6# 的帖子

你是说的 这个 “title 网址 屏蔽/解除屏蔽”  吗?
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2007-11-26 15:06 发表
你是说的 这个 “title 网址 屏蔽/解除屏蔽”  吗?

里面的标签,如:jiec,:quan啊

TOP

哈哈 。。
那我就没办法了,除了26个字母,其它的我统统不认识。哈哈哈哈。。。。。
技术问题请到论坛发帖求助!

TOP

代码似乎还有点点问题,我解除屏蔽的时候,似乎解除不了啊

还有个问题,代码看起来似乎有点乱,排版不是很好看(呵呵,鸡蛋里挑骨头了,因为既然是代码征集,就是拿的出手的精品中的精品)

TOP

已经更新,这已经是最大努力了,
稍微作了些优化,和出错判断。
技术问题请到论坛发帖求助!

TOP

哈哈~~~
我来揭示一下你们又犯了什么错误~~~
1. 加到hosts 里的网站,是不是所谓的病毒、木马网站,色情、垃圾网站先
      是的话,就一点机会都不要给,也就是说,不需要提供解除了

2. 哦,你们以为人家加个屏蔽网站就要这么辛苦吖,加一个就要用那个批处理吖
      想想整个网络有多少个网站先,加这些东西自然是到各安全论坛里去要
      几千上万个屏蔽网站自然是别人帮你收集,你拿来用,靠你一个人,傻!
3.
@echo off
attrib -r %windir%\system32\drivers\etc\hosts && notepad.exe %windir%\system32\drivers\etc\hosts
echo 编辑好hosts后保存,保存好后就在CMD窗口按回车即可
pause>nul
attrib +r %windir%\system32\drivers\etc\hostsCOPY
4. 其实若中毒的话,人家要搞你的hosts,一样可以把你的hosts 删掉,只读又如何,人家改不了你的hosts就删掉,然后自己建一个hosts,并且这个hosts是你很难删掉的,牛吧
Software is like sex: it's better when it's free..!

TOP

原帖由 somebody 于 2007-11-29 13:51 发表
哈哈~~~
我来揭示一下你们又犯了什么错误~~~
1. 加到hosts 里的网站,是不是所谓的病毒、木马网站,色情、垃圾网站先
      是的话,就一点机会都不要给,也就是说,不需要提供解除了

2. 哦,你们以为人家加个 ...


真是一山还有一山高,在下真是甘拜下风。。。。

按楼上的说法,最好不要上网,因为没有任何东西能彻底的预防病毒,
    就好象一个人,怕噎死而不敢喝水一样,又好像认为吃过了早饭就不用吃晚饭了一样,因为反正还是会饿的!

[ 本帖最后由 随风 于 2007-11-29 16:01 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 13# 的帖子

有同感,站在巨人的面前
我们就是那一 弱智

TOP

晕啊
somebody应该知道,批处理作用是有限的!发挥了他的作用就足够了,何必还要说他不能怎么怎么的呢?
利用host是“一种“方法
利用批处理就能简化我们利用这种方法的
这就达到了批处理的目的了,
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

返回列表