V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
617450941
V2EX  ›  Linux

linux 怎么对运行的程序访问的网址进行重新定向

  •  1
     
  •   617450941 · 2015-11-30 14:21:06 +08:00 · 3244 次点击
    这是一个创建于 3273 天前的主题,其中的信息可能已经有所发展或是发生改变。
    linux 怎么对运行的程序访问的网址进行重新定向 比如程序访问 www.baidu.com 就跳转到 www.qq.com
    18 条回复    2015-12-05 00:37:51 +08:00
    xrxsh
        1
    xrxsh  
       2015-11-30 14:22:36 +08:00
    这个确定不是用 JS 写?
    fising
        2
    fising  
       2015-11-30 14:24:22 +08:00
    从域名解析上解决
    Librazy
        3
    Librazy  
       2015-11-30 14:31:53 +08:00 via Android
    写一个代理,检测传出报文,如果请求了该网址就 302 跳转
    ncisoft
        4
    ncisoft  
       2015-11-30 19:14:40 +08:00 via Android
    Apache rewrite
    GNiux
        5
    GNiux  
       2015-12-01 01:39:14 +08:00 via iPhone
    Hello1995
        6
    Hello1995  
       2015-12-01 09:59:28 +08:00 via Android
    楼主的意思是本地实现吧,修改 /etc/hosts 文件,加一行:
    ```
    123.123.123.123 example.com
    ```
    A 网站为 example.com
    B 网站 IP 地址为 123.123.123.123 。
    访问 A 网站即可跳转到 B 网站…
    latyas
        7
    latyas  
       2015-12-01 11:37:36 +08:00
    网址重定向?假设你说的意思是 HTTP 请求匹配到制定的 HOST ,在网络层重定向流量

    1. iptables
    iptables 有串匹配的,但是效率应该不好,哪怕用到各种高大上的看毛片算法啥的

    ```shell
    iptables -t nat -A OUTPUT -p tcp --dport 80 -m string --string "www.baidu.com" --algo kmp -j DNAT --to `host -t a www.qq.com | awk '{print $4}' | egrep ^[1-9]`:80
    ```
    不保证正确 23333333

    **如果说的是 HTTP Redirect**

    2. nginx 反向代理
    就是在 nginx 上判断请求的 HOST ,用 ipbtales 把出口端口 80 流量重定向到 nginx 上,由 nginx 做反向代理
    abscon
        8
    abscon  
       2015-12-01 11:59:55 +08:00 via iPhone
    linux 怎样煮咖啡
    KyleMeow
        9
    KyleMeow  
       2015-12-02 19:18:03 +08:00
    @Hello1995 不一定。同一个 IP 上可以搭建多个网站的。还是用自己的服务器 301 一下最可靠。
    Hello1995
        10
    Hello1995  
       2015-12-02 19:55:33 +08:00 via Android
    @KyleMeow 我也知道可能多站同 IP 。但楼主并没有表达清楚,我基于楼主没法控制服务器的假设做出回答。我自己实现的话肯定是 301 / 302 ,而且我现在也正是这么实现的。
    617450941
        11
    617450941  
    OP
       2015-12-04 23:09:28 +08:00
    就是对运行的程序访问的网址 url 进行劫持跳转
    617450941
        12
    617450941  
    OP
       2015-12-04 23:21:48 +08:00
    @latyas 对是网址重定向
    617450941
        13
    617450941  
    OP
       2015-12-05 00:04:47 +08:00 via Android
    @Hello1995 要是一个 ip 多站点的 修改 host 就不行了呀,要能跳转到具体 url 网址的
    Hello1995
        14
    Hello1995  
       2015-12-05 00:11:22 +08:00 via Android
    @617450941 如果你能控制到域名,能控制到服务器, 301 自然是最好的选择。我在 #10 说了,我原本以为你是指本地,所以我才说用修改 hosts 的方法。
    617450941
        15
    617450941  
    OP
       2015-12-05 00:16:15 +08:00 via Android
    @Hello1995 301 具体是怎么操作 能说说吗 谢谢
    617450941
        16
    617450941  
    OP
       2015-12-05 00:18:08 +08:00 via Android
    @Hello1995 你说的这个 301 跳转貌似是 web 端的网页跳转 我指的是对本地运行的程序所访问的网页域名进行跳转
    Hello1995
        17
    Hello1995  
       2015-12-05 00:33:14 +08:00 via Android
    你先说说你想实现什么吧,你最初说的和 #11 说的情况不一样,我没理解你想表达哪种情况。如果是你自己本地的机器想在访问 baidu.com 的时候跳转到 qq.com ,那就只需要修改你本地的 hosts 文件。如果你是想让你本局域网内的机器访问 baidu 时跳转到 qq ,你可以在出口的路由器修改 hosts 。想要更大范围的影响就只能取得 baidu.com 域名的控制权修改 DNS 设置,或者直接大面积 DNS 污染了。如果仅仅只是你自己的网站为 example-a.com ,访问时跳转到网站 example-b.com ,方法也很多,比如说 Apache Rewrite …具体教程搜就有了。
    Hello1995
        18
    Hello1995  
       2015-12-05 00:37:51 +08:00 via Android
    16 # 。我临时想到的方法就是在本地搭建 Apache ,顺便把本地程序访问的域名 baidu.com 指向本地,然后本地 301 跳转到某个特定页面。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1227 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.