禁止浏览器访问某些页面

本文介绍如何在Windows环境下通过PHP和Apache设置HTTP代理,阻止特定页面加载,保护系统安全。步骤包括安装XAMPP,调整Firefox代理设置,配置Apache的.htaccess和PHP代码。
摘要由CSDN通过智能技术生成

windows下 利用php+apache+http代理,实现本地页面黑名单

背景

有一个项目,需要给第三方桌面软件做二次开发。
但是这个软件启动时会弹出一个页面,这个页面的权限很大,如果不禁止掉的话,会给系统安全带来风险。
所以需要拦截掉该网页。

准备工作

  1. 安装 xampp
  2. 设置Firefox的network.proxy.allow_hijacking_localhost为true(转https://blog.csdn.net/qq_33020901/article/details/105546995)
  3. 将Apache 注册到服务 httpd.exe -k install -n Apache
  4. 如果默认浏览器是IE,则需要更换。谷歌,火狐内核的都行

解决方案

首先需要使用 LAN本地代理将所有http请求定向到Apache
下面的代码用bat文件执行。

@echo off 
echo 开始设置IE代理上网 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "http=127.0.0.1:80" /f 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /d "<-loopback>" /f 
echo 代理设置完成按任意键关闭 
pause>nul

然后配置Apache.htaccess文件
(如果不好使的话,应该是需要在httpd.conf中开启什么功能)

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteRule ^/movie/([0-9]+)($|/$) /index.php?s=/movie/toMovieInfo/id/$1 [L]

然后编辑php文件,文件使用ASCII编码

<?php
if($_SERVER['SERVER_PORT']=='9091')
{
	header('Location: http://www.baidu.com');
}
else{
	if(substr($_SERVER['PHP_SELF'],-4)=='.css'){
		header("Content-Type:text/css;charset=utf-8");
	}else{
		header("content-type:text/html;charset=utf-8");
	}
	//初始化
	$ch = curl_init();
	//设置选项,包括URL
	curl_setopt($ch, CURLOPT_URL, $_SERVER['REQUEST_URI']);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

	$cookie = '';
	foreach($_COOKIE as $k => $v){
		$cookie.= $k.'='.$v.';';
	}
	curl_setopt($ch, CURLOPT_COOKIE, $cookie);//请求cookie
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		//声明使用POST方式来进行发送
   		curl_setopt($ch, CURLOPT_POST, 1);
		//发送什么数据呢
		curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));//重点
		//忽略证书
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	}

	//执行
	$sContent = curl_exec($ch);
	$followLocationUrl = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
	if($followLocationUrl != $_SERVER['REQUEST_URI']){
		header('Location: '.$followLocationUrl);
	}	
	if(curl_errno($ch)){
		echo curl_error($ch);
    }

    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($sContent, 0, $headerSize);
    preg_match('/Set-Cookie: (.*)=(.*);path=(.*);/iU',$header,$str); //正则匹配
    if(count($str)>1){
    	setcookie($str[1],$str[2],time()+3600*24,$str[3]);//响应头 set-cookie	
    }
    $body = substr($sContent, $headerSize);

	//释放curl句柄
	curl_close($ch);
	echo $body;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值