离线时伪造在线网站

离线时伪造在线网站

我正在使用本地服务器开发网站,但我有远程依赖项。我想伪造来自远程服务器的文件请求。例如,当浏览器请求时,将返回fooCDN.com/bloatedLib.js的内容。/Users/name/Desktop/bloatedLib.js

我使用 Mac,在系统或浏览器级别运行的解决方案就可以了。如果在浏览器级别运行,只有 Firefox 或 Chrome 解决方案才行。我不能使用 Windows 电脑。

答案1

我破解了这个小型代理服务器,只下载丢失的文件。只需设置你的 /etc/hosts 文件,将你想要缓存的网站指向 127.0.0.1,将你想要阻止的网站指向 0.0.0.0

#!/bin/sh 
nc -ll -p 80 -e sh -c ' 
while read A B DUMMY 
do 
   case "$A" in 
      [Gg][Ee][Tt]) 
         FULL=$B #full path of the file
         F=${FULL##*/}
         F=${F%%\?*} #file name only
         #if we have it cat it back to browser
         [ -f "$F" ] && cat "$F" && break 
      ;; 
      [Hh][Oo][Ss][Tt]*) 
         [ -f "$F" ] && break #file already exists
         HOST=${B:0:$((${#B}-1))} #the host name
         #resolve by DNS first so we can cache it
         sed -i "s/hosts:\t\tfiles /hosts:\t\t/g" /etc/nsswitch.conf 
         wget -t 0 -q --no-dns-cache $HOST$FULL
         #got it now revert to checking host file 1st
         sed -i "s/hosts:\t\t/hosts:\t\tfiles /g" /etc/nsswitch.conf
         #cat the file because I didn't think to wget through tee
         cat "$F" 
         break 
      ;; 
   esac 
done 
'

请注意,它将所有文件放在一个目录中,因此可能会导致版本冲突。(我故意这样做,这样我就不会有 500 份 jquery 副本)

答案2

听起来你正在运行本地网络服务器。太好了。

在你的 Mac 文件系统中,有一个名为 的文件/etc/hosts。你可以在 中添加以下行,将所有请求重定向fooCDN.com到本地计算机/etc/hosts

127.0.0.1   foocdn.com www.foocdn.com

您需要 root(超级用户)权限才能编辑/etc/hosts

上面这行的意思是fooCDN.com将从您自己的计算机加载,其中有一个 Web 服务器正在监听。

但是,您没有指定本地运行的 Web 服务器。按照 Web 服务器的文档,您应该创建一个虚拟主机,将 的文档根目录fooCDN.com指向/Users/name/Desktop/

这是一个示例配置(我自己还没有测试过),你可以尝试使用阿帕奇

<VirtualHost 127.0.0.1:80>
    ServerName foocdn.com
    ServerAlias www.foocdn.com
    DocumentRoot /Users/name/Desktop
</VirtualHost>

以下是一个示例配置Nginx(同样未经测试):

server {
    listen 80;
    root /Users/name/Desktop;
    server_name foocdn.com;
}

不要忘记重新启动您的 Web 服务器服务或重新加载新的配置文件。

答案3

你可以使用代理服务器支持软件URL 重写完成任务。许多代理服务器应用程序支持 URL 重写。例如,Charles Web 调试代理应用程序适用于 Windows、Mac OS 和 Linux支持 URL 重写。您可以在 Mac 系统上安装它,然后配置系统上的浏览器以使用代理服务器。

或者,阿帕奇是免费且开源的,mod_proxymod_rewrite模块。

代理服务器是免费的,并且可以在 Mac OS X 系统上运行。

如果您需要从浏览器缓存中提取项目,以便通过代理服务器使用它们,则可以使用以下技术查看 Chrome 缓存(简单方法)。例如,在 Google Chrome 中,您可以chrome:\\cache在浏览器的地址栏中输入,然后在 Chrome 缓存中找到相关项目并将其复制到其他地方。

答案4

听起来不错韋夫应该能满足您的需求。这是一个代理服务器,您可以在其中选择资源以供离线使用。

相关内容