zoukankan      html  css  js  c++  java
  • 网站可以如此复制?

    论坛中碰到如此问题:
    我们做了一个网站,域名是www.3322173.com
    没想到今天忽然发现了
    www.qiepeng.cn的内容和我们的是一模一样...内容也是同步更新,只是把内容中3322173.com替换成qiepeng.cn
    我关闭我自己的IIS后,两个域名都不能访问了.
    我郁闷啊,这是什么样的技术哦.怎么解决呢?

    这个事情肇事人很无耻,也很容易对付,只要把对方服务器ip屏蔽掉就ok了,如何实现的呢,下面就以上面的例子讲述。

    主要思路就是url重定向。

    打开iis,新建一个网站,名称为test,配置同一般的.net2.0配置。

    建立成功后,有些地方需要修改。

    为404错误重定向,这个是最关键的。选择属性-自定义错误-列表中双击404,消息类型选url,url的地方输入 /Handler.ashx

    让iis不处理aspx等文件。选择属性-主目录-配置-应用程序扩展中把aspx删除。

    这样iis就配置完成了,接着写一小段代码来处理404错误重定向的页面就可以了。

    这里用httphandler来处理,也就是上面的Handler.ashx文件,这样不容易和其他文件冲突,用dll和webconfig配合其实更好。

    打开vss2005,建立新网站,就是刚刚的iis路径。删掉那个default.aspx。

    添加新项-一般处理程序-生成一个Handler.ashx。

    添加如下代码:

    <%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Web;

    public class Handler : IHttpHandler {
        
        
    public void ProcessRequest (HttpContext context) {
            
            
    //标记一下
            context.Response.ContentType = "text/plain";
            
            
    //取得404错误重定向的参数和主机
            string strQuery = context.Request.Url.Query.Replace("?404;","").ToLower();
            
    string localHost = context.Request.Url.Authority.ToLower();

            
    //计算目标地址
            string targetHost = "www.3322173.com";
            
    string queryUrl = strQuery.Replace(localHost, targetHost);
            
            

            
    try
            
    {
                
    //获取目标页面内容
                System.Net.WebClient wb = new System.Net.WebClient();
                
    byte[] b = wb.DownloadData(queryUrl);

                
    string type = wb.ResponseHeaders["Content-Type"];

                
    //判断是否文档页面,这里可以稍微复杂些考虑到js和css等其他文件,多判断几个条件就可以了
                if (!string.IsNullOrEmpty(type) && type.ToLower().StartsWith("text/html"))
                
    {
                    
    //替换文档内容中的主机地址
                    string str = System.Text.Encoding.Default.GetString(b);
                    str 
    = str.Replace(targetHost, localHost);
                    context.Response.Write(str);
                }

                
    else
                
    {
                    
    //如果是图片等直接输出
                    context.Response.BinaryWrite(b);
                }

                context.Response.End();
            }

            
    catch
            
    { }
        }

     
        
    public bool IsReusable {
            
    get {
                
    return false;
            }

        }


    }

    效果如下

    直接运行就可以看到效果了。

    申明:本文只针对技术方面讨论,请不要用于不正当途径,否则后果自负,本文作者jinjazz不承担任何责任。
     

  • 相关阅读:
    CentOS7通过 yum安装路径查询方法
    centos中如何查看tomcat的版本
    CentOS下安装Filezilla软件
    关于jFinal开发中遇到的中文乱码问题解决办法
    jFinal render为什么不跳转到指定的页面
    [Algorithm] 1290. Convert Binary Number in a Linked List to Integer
    一道百度面试题
    ORA-01078, LRM-00123错误处理
    hdu 4115 (2—SAT)
    【PAT Advanced Level】1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204964.html
Copyright © 2011-2022 走看看