网页劫持实现访问外站是否提示

本文介绍了一种在网页中实现对外部链接跳转前进行确认的方法。通过使用JavaScript阻止默认跳转行为,并检查目标链接的origin属性来判断是否为外部链接。如果是外部链接,则弹出确认框让用户决定是否继续跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常看到这样的情况,在酷安或者贴吧或者别的网站访问外站链接时,会提醒你是否跳转,这个咋做的?

 分为两步:

1.对a标签进阻止默认跳转

2.判断origin是否一样

有以下html代码

<div class="test">
    <a href="https://www.baidu.com/?name=12">百度</a>
    <a href="1.html">百度</a>
    <a href="http://127.0.0.1:5500/1.html">百度</a>
    <a href="https://www.w3school.com.cn/js/js_htmldom_document.asp">百度</a>
</div>

我当前的url是

http://127.0.0.1:5500/实现跳转.html

 很明显,对于当前域名来说, 第一和第4才是外站的链接,2和3能够直接跳转,可是怎么判断呢?

可以通过location.origin进行判断

1.先对a标签添加点击事件,这里我用到了事件委托

我们先点击挨个点击打印看看他们的origin吧

<script>
    let test = document.getElementsByClassName('test')[0]
    console.log('当前域名', location.origin);
    test.addEventListener('click', (e) => {
      e.preventDefault();
      console.log(e.target.origin);     

    })
  </script>

 这就简单了,只需要判断新旧的origin是不是一样就好了


完整代码

<script>
    let test = document.getElementsByClassName('test')[0]
    console.log('当前域名', location.origin);
    test.addEventListener('click', (e) => {
      e.preventDefault();
      //思路:阻止跳转再判断是否和当前的origin是否相同

      let current = location.origin
      let new_ = e.target.origin
      if (current === new_) {//如过新链接和当前同域名
        location.href = e.target.href//跳转
      }
      else {//如果不同,先询问是否跳转
        let yes = confirm(`当前点击属于外站,是否访问${e.target.href}`)
        if (yes) {
          location.href = e.target.href
        }
      }    

    })
  </script>

效果展示,点击外站链接就弹窗询问

 

### 网页常见故障及解决方案 网页访问过程中可能会遇到多种类型的故障,以下是几种常见的网页故障以及对应的解决方法: #### 1. **DNS解析错误** 当用户尝试打开某个网站时,浏览器显示“无法找到该点”或类似的错误消息。这通常是由于域名系统(DNS)未能正确解析所致。 - 解决方案:可以尝试清除本地DNS缓存或者更改网络设置中的DNS服务器地址为公共DNS服务提供商(如Google DNS: `8.8.8.8` 和 `8.8.4.4`)。如果问题仍然存在,则可能是目标网站本身存在问题[^1]。 #### 2. **连接超时** 页面加载时间过长最终导致失败提示“连接已超时”。这种现象可能由网络延迟高、服务器负载过大等原因引起。 - 处理办法:确认当前互联网连接状态良好;关闭不必要的后台程序减少带宽占用;另还可以通过更换不同的路由路径来改善情况,比如切换至其他ISP提供的线路[^3]。 #### 3. **SSL证书验证失败** 现代安全浏览要求HTTPS协议下的数据传输需经过加密保护。然而有时会因为各种原因造成SSL/TLS握手过程出现问题而阻止进一步操作。 - 应对措施:更新操作系统和浏览器版本确保支持最新的加密算法标准;联系网站管理员核实其部署的有效期内未被吊销过的合法CA签发的数字证书[^2]。 #### 4. **JavaScript脚本执行异常** 许多动态交互功能依赖于客户端运行javascript代码实现。一旦这些资源文件丢失损坏或是跨域请求受限都会影响正常使用体验。 - 调整策略:查看开发者工具Console日志定位具体报错位置并修复相应逻辑缺陷;对于第三方库引入建议采用CDN加速方式提高稳定性同时降低维护成本。 ```html <!-- 示例HTML结构 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- 使用CDN链接部JS库 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> </body> </html> ``` #### 5. **Cookie管理不当引发的身份认证失效** 某些应用依靠存储在用户的cookies记录登录态信息以便下次自动跳转无需重复输入凭证。但如果cookie参数配置不合理容易遭受劫持攻击同时也可能导致频繁重新鉴权的现象发生。 - 改善方向:遵循HttpOnly标记防止XSS窃取敏感资料;启用Secure属性强制仅允许通过TLS通道交换此类元数据;定期清理陈旧无用项释放空间提升效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值