vivaldiWebPanelUA_MacOSX.sh

ウェブブラウザ・Vivaldi の Webパネルのユーザエージェントを書き換えるシェルスクリプト。
Mac OS Xで動作します。(Ubuntu版はこちら

【関連ブログ記事】

ソースコード  (隠す)

#!/bin/bash
# change userAgent of Vivaldi WebPanel on Mac OS X
# last modified at 2015-12-01
# more detail -> http://freefielder.jp/lab/vivaldi/macos.php

# Original userAgent string  
S="Linux; Android [0-9]+\\.[0-9]+\\.[0-9]+"
# replace to 
R="iPhone; CPU iPhone OS 9_1 like Mac OS X"

# find path for bundle.js

BDL_DIR='/Vivaldi Framework.framework/Resources/vivaldi/bundle.js'

IFS_BAK=$IFS
IFS=$'\n'
VIV_DIR=($(mdfind 'kMDItemFSName = "Vivaldi*.app"'))
IFS=$IFS_BAK

NUM_OF_DIR=${#VIV_DIR[*]}

if [ $NUM_OF_DIR -eq 0 ]; then 
	echo;echo 'Vivaldi not found.'
	echo 'Input Vivaldi.app location : e.g. /Applications/Vivaldi.app'
	echo '  or press only [Enter] to quit.'
	printf '>> '
	read VIV_DIR
	NUM_OF_DIR=1
	N=1
	exit 0
elif [ $NUM_OF_DIR -ge 2 ]; then
	echo;echo ${NUM_OF_DIR}' Vivaldies are found. Choose one and input the number.'
	N=1
	for obj in "${VIV_DIR[@]}"; do
		echo $N') '${VIV_DIR[`expr $N - 1`]}
		N=`expr $N + 1`
	done
	printf ">> "
	read N
	#
	expr $N + 1 >/dev/null 2>&1
	if [ $? -ge 2 ]; then
		echo "bad input."
		exit 0
	fi
	#
else
	N=1
fi
	
if [ $N -le ${NUM_OF_DIR} ]; then
	NN=`expr $N - 1`
#	echo ${VIV_DIR[${NN}]}
	VIV="${VIV_DIR[${NN}]}"'/Contents/Versions/'
else
	echo 'bad input.'
	exit 0
fi


IFS_BAK=$IFS
IFS=$'\n'
VER_NO=($(ls ${VIV}))
IFS=$IFS_BAK

# version number 
NUM_OF_DIR=${#VER_NO[*]}
BNDL="${VIV}${VER_NO[$NUM_OF_DIR - 1]}${BDL_DIR}"

if [ -z "$BNDL" ] || ! [ -e "$BNDL" ] || [ -d "$BNDL" ] ; then
	echo
	echo 'file not found'
	echo 'Input bundle.js location : e.g. /Applications/Vivaldi.app/Contents/Versions/1.0.303.52/Vivaldi\ Framework.framework/Resources/vivaldi/bundle.js'
	echo '  or press only [Enter] to quit.'
	printf '>> '
	read BNDL
fi

if [ -z "$BNDL" ] ; then
	exit 0
fi

echo
echo "File location : ""$BNDL"
echo '>> Continue ? : Y or N'
read CONTFLAG
 
if ! [ -z $CONTFLAG ] && [ $CONTFLAG = 'Y' -o $CONTFLAG = 'y' ] ; then
	if ! [ -e "$BNDL" ] || [ -d "$BNDL" ]; then
		echo
		echo 'file not exist'
		exit 0
	fi
else
	echo;echo 'exit'
	exit 0
fi

SS=$(cat "${BNDL}" | awk 'match($0,/'"${S}"'/){print substr($0,RSTART,RLENGTH)}')

if [ -z "$SS" ] ; then
	echo;echo 'UserAgent might be ALREADY changed.'
	echo 'exit'
	exit 0
fi

# create backup file as 'bundle.js.bkup{timestamp}' in the same place with this script.
SHDIR="$(cd $(dirname $0) && pwd)"
TIMESTAMP=`date '+%Y%m%d%H%M'`
BKUP="${SHDIR}/bundle.js.bkup${TIMESTAMP}"

cp "${BNDL}" "${BKUP}"

sed "s/$SS/$R/" "$BKUP" > "$BNDL"

echo
echo 'UserAgent of WebPanel changed.'
echo 'backup file : '$BKUP

ダウンロード

 → vivaldiWebPanelUA_MacOSX.sh.zip

使いかた

  1. 上記リンクから zip ファイルをダウンロードして展開。"vivaldiWebPanelUA_MacOSX.sh" というファイルが現れます。
  2. ターミナルを開いて、上記 .sh ファイルがあるディレクトリへ移動。【ダウンロード】フォルダに展開したのなら…
    $ cd Downloads/
  3. スクリプトを走らせる。
  4. $ ./vivaldiWebPanelUA_MacOSX.sh

    スクリプトが、インストールされている Vivaldi の場所を自動的に探し出し、bundle.js を書き換えます。

    注)Vivaldi を新規インストール / 更新した場合は、このスクリプトを走らせる前に、必ずいちど Vivaldi を 起動 → 終了 させてください。OSのセキュリティの関係で、初起動前にアプリケーションファイルが書き換えられると、以下のようなアラートが出ます。

  5. 複数の Vivaldi が見つかった場合は、ターゲットを指定するためのメッセージが表示されます。番号を入力してください。
    2 Vivaldies are found. Choose one and input the number.
    1) /Applications/Vivaldi 2.app
    2) /Applications/Vivaldi.app
    >>
  6. 修正するファイルを確認するメッセージが表示されたら、続行か中止かを選んでください。
    File location: /Applications/Vivaldi.app/Contents/Versions/1.0.303.52/Vivaldi Framework.framework/Resources/vivaldi/bundle.js
    >> Continue ? : Y or N

    通常は "Y(続行)" で大丈夫な筈です。

  7. 何事もなければ、スクリプトは bundle.js のバックアップファイルを作成し、元のファイルのユーザエージェントを書き換えて終了します。

Webパネルから以下の URL にアクセスすると、現在のユーザエージェント文字列を確認できます。
 → http://freefielder.jp/lab/ua_checker/

(c)2015 freefielder.jp