我想要一个类似 bash 脚本的东西,当我在浏览器中加载特定网页时,它会坐下来侦听然后运行脚本。我想知道这样的事情是否可能,如果是这样,我该怎么做?
我认为这应该以某种方式成为可能。我在Mac上,在我的/etc/hosts
文件中,我可以指定应该阻止特定的网站,例如" www.facebook.com
"。
简而言之。当我的计算机浏览器导航到网页时,是否可以(以及如何)运行 bash 脚本,例如"www.facebook.com
"?
更新的答案
如果要将站点名称与预定义站点进行一些匹配,然后说些什么,则脚本将如下所示:
#!/bin/bash
while :; do
site=$(osascript -e 'tell application "Safari" to return URL of front document')
if [[ $site =~ stackoverflow ]]; then
say "Stack overflow! A quality site"
fi
sleep 1
done
原始答案
您对于正在使用的浏览器,页面是什么或要执行的操作不是很具体,但是此脚本会坐下来观看Safari并询问它您正在查看哪个页面并在终端中打印。您显然可以对其进行修改以检测某些页面并在导航到它们时运行脚本。
#!/bin/bash
while :; do
osascript -e 'tell application "Safari" to return URL of front document'
sleep 1
done
将上述内容放在 HOME 目录中名为 monitorSafari
的文件中。然后进入终端并键入以下内容一次以使其可执行:
chmod +x monitorSafari
然后,您可以通过在 Finder 中双击它或通过键入来运行它
./monitorSafari
在您的终端中。它每秒打印一次您所在的页面。
你可以:
- 在Mac上启动Web服务器(
httpd
,lighttpd
,...)(或使用预安装的httpd
) - 将首选脚本添加到 Web 服务器的文档根目录,以便在特定地址上运行(例如在
localhost:8080
上)。例如,此脚本可以是调用bash
脚本或完成作业本身的PHP
脚本。不过,这可以通过cgi
来完成。 - 然后将您的首选地址 (
www.facebook.com
) 添加到您的hosts
文件中,以将 URL 请求重定向到localhost:8080
- 或者,安装
dnsmasq
来管理自定义请求的重定向,而不是修改hosts
文件。