◆ やっぱり Google の仕様はよくわかんない
◆ q= が検索したワードで oq= が自分が打った補完なしのワード
◆ ? のクエリだけじゃなくて # で 別に Ajax で検索してるのもある
◆ ページ遷移しないで検索繰り返すと # が使われる
◆ # だと oq が取れない 

Google の検索したワードのログを保存する拡張機能を作ろうと調べてみたのですが すごく複雑です

通常は

https://www.google.co.jp/search?q=searchword&oq=searchwor&aaaaaaa

みたいな感じです
aaaaa なところはよくわからないものが色々です

いまは全部 https みたいなので http は考慮しなくて良さそうです
co.jp は国によって(設定によって?)違いますが日本なら co.jp あと英語設定な人もある程度いると思うので 一応 com もいれて 2 つだけ考えれば十分でしょう

q=XXXXX が検索したワード
oq=XXXXX がオリジナルのワードです
予測変換で補完する元のやつです
補完した結果が q になります

ここまではシンプルなんですが
Google ではインクリメンタルサーチで打ってる途中でも検索してます

それは

https://www.google.co.jp/complete/search?

と complete が入ってきます
途中のものはいらないなら complete は捨てればいいですが最後に Enter を押さない場合は検索してるのに保存されていなくなるので 1秒以内に再度リクエストしていたら 前の方を捨てるなどの対策が必要そう

次に 検索ワードを変更したときのクエリの位置です

最初に abcd で検索すると ?q=abcd はずっと残っています
同じページで検索ボックスに xyz を入れて検索しても ?q=abcd のままです

なぜか URL の q=abcd が残っているのにその状態でリロードしても xyz で検索が続いています

よく見ると 最後に #q=xyz というのが増えていました

# なのでサーバへのリクエストでは xyz という検索ワードは送らないで 後から別に Ajax でリクエストしてるみたいです
クエリの ? の q= を書き換えてくれればいいのですけど

また 何かフラグがあるようで #q=xyz を消してみたら abcd の検索結果じゃなくて Google のトップページに飛ばされました

# があると oq は存在しなくて 補完をして検索しても q だけです


どこから Google の検索を使ったかでも 検索エンジンの登録のされ方が違うのか URL が多少違ってきます
Google のトップページから検索するだけでも

https://www.google.co.jp/webhp?hl=ja#q=jkl

になります
?q= はなくて #q= だけです
oq は存在しないです


他にもまだまだありそうですし Google ほど頻繁に仕様が変わるものだと 作ったところでこっちが変える手間が多すぎそうなので諦めることにしました

作るにしても Google 検索ページは URL そのままで全ログを取っておいて 後からフォーマットを判断して検索ワードを取り出すようにしたほうがよさそうです