Sabitlenmiş Tweet

谷歌浏览器多开分身方法
我的电脑是MAC M1的,结合大佬们的攻略,我研究了一下Google实例多开,可能有些撸友还不太清楚大佬的攻略,所以我这里详细的写一份非常简单的小白也没问题的公路,使用命令“谷歌多开”。先看完不要着急开始,我会把所有小白关心的问题都写在下面,以下是步骤详解:
一、创建多个实例
1.进入你想要安装的目录创建文件夹
mkdir -p Chrome_Profiles/Profile_{1..10}
2.在你刚刚的目录创建启动脚本,然后编写这个文件
touch chrome_profiles.sh
然后你能看到生成了这个文件,然后“右键”点击这个文件,“文本编辑”打开,把以下内容复制进去后,关闭。(注意第一参数那里的XX是你的路径,查看路径使用pwd,或者右键点击图中这里复制)
#!/bin/bash
# 定义参数
APPS_DIR="/Users/XX/Chrome/Chrome实例应用" # 生成的独立应用存放目录
MAX_PROFILES=10
# 检查输入参数
if [ $# -eq 0 ]; then
echo "错误,好好检查路径是否一致"
exit 1
fi
input="$1"
# 解析输入(支持逗号和范围)
IFS=',' read -ra PARTS <<< "$input"
declare -a PROFILES_TO_OPEN=()
for part in "${PARTS[@]}"; do
if [[ "$part" =~ ^[0-9]+(-[0-9]+)?$ ]]; then
if [[ "$part" == *"-"* ]]; then
start=$(cut -d '-' -f1 <<< "$part")
end=$(cut -d '-' -f2 <<< "$part")
if [ "$start" -gt "$end" ]; then
echo "错误:范围 $part 的起始值大于结束值"
exit 1
fi
for ((i=start; i<=end; i++)); do
PROFILES_TO_OPEN+=("$i")
done
else
PROFILES_TO_OPEN+=("$part")
fi
else
echo "错误:无效的输入部分 '$part'"
exit 1
fi
done
# 去重并验证范围
PROFILES_TO_OPEN=($(printf "%s\n" "${PROFILES_TO_OPEN[@]}" | sort -nu))
for i in "${PROFILES_TO_OPEN[@]}"; do
if [ "$i" -lt 1 ] || [ "$i" -gt "$MAX_PROFILES" ]; then
echo "错误:实例编号 $i 超出 1-$MAX_PROFILES 的范围"
exit 1
fi
done
# 通过 .app 文件启动实例
for i in "${PROFILES_TO_OPEN[@]}"; do
APP_PATH="$APPS_DIR/Chrome实例$i.app"
if [ -d "$APP_PATH" ]; then
echo "正在启动实例 $i..."
open "$APP_PATH"
# 日志记录(按日期分割日志)
LOG_FILE="/tmp/chrome_profiles_$(date '+%Y%m%d').log"
echo "$(date '+%Y-%m-%d %H:%M:%S') - 实例 $i 已启动" >> "$LOG_FILE"
else
echo "错误:应用 $APP_PATH 不存在"
# 记录错误日志
LOG_FILE="/tmp/chrome_profiles_$(date '+%Y%m%d').log"
echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误:应用 $APP_PATH 不存在" >> "$LOG_FILE"
fi
done
echo "已启动实例:${PROFILES_TO_OPEN[*]}"
以上是内容,不要复制本段话。
3.创建生成Google的实例文件create_chrome_apps.sh
touch create_chrome_apps.sh
同样的方法,文本编辑点开粘贴复制以下内容:
#!/bin/bash
# 定义配置
CHROME_PROFILES_DIR="/Users/XX/Chrome/Chrome_Profiles" # 你的配置目录
TOTAL_INSTANCES=10 # 实例总数
APPS_OUTPUT_DIR="/Users/XX/Chrome/Chrome实例应用" # 生成的独立应用存放目录
# 清理并重建输出目录
rm -rf "$APPS_OUTPUT_DIR"
mkdir -p "$APPS_OUTPUT_DIR"
# 生成独立应用
for i in $(seq 1 $TOTAL_INSTANCES); do
APP_NAME="Chrome实例$i"
APP_PATH="$APPS_OUTPUT_DIR/$APP_NAME.app"
# 创建应用结构
mkdir -p "$APP_PATH/Contents/MacOS"
mkdir -p "$APP_PATH/Contents/Resources"
# 生成启动脚本
cat < "$APP_PATH/Contents/MacOS/ChromeLauncher"
#!/bin/bash
PROFILE_DIR="$CHROME_PROFILES_DIR/Profile_$i"
mkdir -p "\$PROFILE_DIR"
exec open -na "Google Chrome" --args --user-data-dir="\$PROFILE_DIR"
EOF
chmod +x "$APP_PATH/Contents/MacOS/ChromeLauncher"
# 生成 Info.plist 文件(定义应用名称和图标)
cat < "$APP_PATH/Contents/Info.plist"
apple.com/DTDs/PropertyL…">
CFBundleExecutable
ChromeLauncher
CFBundleName
$APP_NAME
CFBundleIdentifier
com.chrome.instance.$i
CFBundleIconFile
AppIcon
EOF
# 复制 Chrome 图标(可选)
cp "/Applications/Google Chrome.app/Contents/Resou…" "$APP_PATH/Contents/Resources/AppIcon.icns"
echo "已生成应用: $APP_NAME.app"
done
echo "所有独立应用已生成到: $APPS_OUTPUT_DIR"
4.同样在目录中创建“关闭”的脚本,当然你可以一个一个关闭,就不需要这一步。
touch close_chrome_profiles.sh
接着“文本编辑”打开后,粘贴以下内容:
#!/bin/bash
CHROME_PROFILES_DIR="/Users/XX/Chrome/Chrome_Profiles"
MAX_PROFILES=10 # 实例数量
if [ $# -eq 0 ]; then
echo "错误,好好检查路径是否统一"
exit 1
fi
input="$1"
if [ "$input" == "all" ]; then
pkill -f "Google Chrome.*--user-data-dir=.*/Profile_"
echo "已关闭所有 Chrome 实例"
exit 0
fi
IFS=',' read -ra PARTS <<< "$input"
declare -a PROFILES_TO_CLOSE=()
for part in "${PARTS[@]}"; do
if [[ "$part" =~ ^[0-9]+(-[0-9]+)?$ ]]; then
if [[ "$part" == *"-"* ]]; then
start=$(cut -d '-' -f1 <<< "$part")
end=$(cut -d '-' -f2 <<< "$part")
if [ "$start" -gt "$end" ]; then
echo "错误:范围 $part 的起始值大于结束值"
exit 1
fi
for ((i=start; i<=end; i++)); do
PROFILES_TO_CLOSE+=("$i")
done
else
PROFILES_TO_CLOSE+=("$part")
fi
else
echo "错误:无效的输入部分 '$part'"
exit 1
fi
done
PROFILES_TO_CLOSE=($(printf "%s\n" "${PROFILES_TO_CLOSE[@]}" | sort -nu))
for i in "${PROFILES_TO_CLOSE[@]}"; do
if [ "$i" -lt 1 ] || [ "$i" -gt "$MAX_PROFILES" ]; then
echo "错误:实例编号 $i 超出 1-$MAX_PROFILES 的范围"
exit 1
fi
done
for i in "${PROFILES_TO_CLOSE[@]}"; do
pids=$(pgrep -f "Google Chrome.*--user-data-dir=.*/Profile_$i(\s|$)")
if [ -n "$pids" ]; then
echo "正在关闭实例 $i (PID: $pids)..."
kill -9 $pids
else
echo "警告:实例 $i 未在运行"
fi
done
echo "操作完成!"
以上是脚本内容,不要复制本段话。
如果你按照以上方法,那到这里就算完成了。


中文



















