it-swarm-ja.com

IE11でユーザーエージェント文字列をブロックするにはどうすればよいですか?

ラップトップをWindows8タッチスクリーンにアップグレードし始めており、古いWebサイト(変更できないもの)の一部がタッチスクリーンをモバイルデバイスとして検出し、Webサイトを正しくロードしないことがわかりました。デスクトップモードでIE11を使用しています。

Webサーバーに渡すユーザー文字列を変更する方法はありますか?

5
Tyler

APick from Bayden Systems の問題と、IE11独自の「開発ツール」を使用する方法 F12、 Ctrl+8、_User Agent String_は、これらの設定がIE11の再起動後も存続しないことです。

すでに提供されているリンク@harrymcからレジストリの値を変更して、いくつかのテストを行いました。

最初に_HKEY_LOCAL_MACHINE_を変更しましたが、ここでは変更しませんでした。
_HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent_

ただし、_HKEY_CURRENT_USER_の変更は機能しました。 (ただし、ユーザー固有です)
_HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent_

最初に変更なしの結果:(結果 myip.nl
これは、IE11v11.0.9600.16384を搭載したWindows8.164ビット用です。

_User agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
Browser: Unknow browser. 
_

私は次のように_IE9.reg_を作成しました:

_REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
@="Mozilla/5.0"
"Compatible"="compatible"
"Platform"="Windows NT 6.1"
"Version"="MSIE 9.0"
_

これにより、「ユーザーエージェント文字列」が完全に変更されます。それを実行した後、私は得ました:

_User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko 
Browser: Internet Explorer 9.0 
_

しかし、これはあなたの「プラットフォーム」も変えるでしょう。私はそれを省きます。 (デフォルトで「Mozilla」のままにすることもできます。)

たぶん、あなたのウェブページがMSIEだけを探すなら、Version-情報だけを変えるだけで十分です。 Platformと「Mozilla」はそのままにしておくことができるので、ウェブサイトはそれを正しく識別できます。 Compatible-タグも追加しました。多分それも使われています。

_REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
"Compatible"="compatible"
"Version"="MSIE 9.0"
_

その結果、次のようになります。

_User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
Browser: Internet Explorer 9.0 
_

開発ツールによって与えられた文字列(F12、 Ctrl+8、_User Agent String_)はIE9に与えます:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

これはオリジナルに最も近いようで、IE9互換として識別する機能を追加します。

「ユーザーエージェント文字列」の何があなたのウェブサイトにモバイルビューを「与える」ようにトリガーするのか正確にはわかりませんが(UAを指定していません)、これらの値で遊ぶと修正され、これらの設定はIE11の再起動後も存続します。 PC。


編集
したがって、問題は次のTouchです。
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)

IEは、それ自体が追加するパーツを変更(または削除)する可能性を提供しません。互換性、プラットフォーム、バージョンを変更したり、プラットフォーム前後のトークンを追加したりできます。 (ただし、バージョンはIE11の送信には含まれず、Pre and Post Platformはヘッダーに送信されません。)

互換モードを設定して、Touchがまだ存在することを確認できます。 (すでに試しましたか?)それが機能する場合は、問題のあるサイトをリストに追加して、常に互換モードで表示されるようにすることができます。

IEがTouchの送信を主張し続ける場合は、拡張プラットフォームキーを使用してUAを操作してみてください。

_REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
@="Mozilla/5.0"
"Platform"="Windows NT 6.1; Trident/7.0; rv:11.0) // ("
_

このようにあなたのUAは
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0) // (; Trident/7.0; Touch; LCJB; rv:11.0)
そしてうまくいけば、サイトは最初の_(_と_)_の間でTouchを見つけるのにもっと問題があります。

それが機能しない場合、唯一のオプションはUAをオーバーライドするアドオンです(UAPickのようですが、再起動後も永続的です)。


編集#2

別のオプションが見つかりました。サイトがUA全体をスキャンする場合、Touchを見つけます。以下を使用すると、UAのプラットフォーム部分をラインフィードでマングルして、確実に見つからないようにします:(この解決策を見つけました ここ

次のように_notouch.vbs_-ファイルを作成します。

_Dim oShell
set oShell = CreateObject("WScript.Shell")
oShell.RegWrite "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Platform", "Windows NT 6.1; Trident/7.0; rv:11.0)" & vbLf & "IGNORE: (", "REG_SZ"
Set oShell = Nothing
_

(_& vbLf & "IGNORE:_- partに注意してください)

.vbsを実行した後、プラットフォーム部分には改行があり、その後にIGNORE行があります。ヘッダーでは次のようになります。

_User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0)
IGNORE: (Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)
_

参照してください...ユーザーエージェント行にTouchはもうありません;)
(これはハックですが、ちょっと...うまくいきます)

4
Rik

問題を引き起こしているのはユーザーエージェント文字列であると確信していますか?

よくわからない場合は、 Fiddler2 を使用して、URLリクエストとそのすべてのヘッダーをトレースしてキャプチャできます。また、Composerを作成して、実験することもできます。これがWebサイトにどのように影響するかを確認するには、そのURLリクエストにアクセスしてください。

Microsoftの記事 ユーザーエージェント文字列について セクション ユーザーエージェントレジストリキー では、IE11ではユーザーエージェント文字列の特定の部分をレジストリキーHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agentを介して変更できると述べています。次のとおりです:

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
SOFTWARE
  Microsoft
     Windows
        CurrentVersion
           Internet Settings
              5.0
                 User Agent
                    (default) = "Mozilla/4.0"
                    Compatible = "compatible"
                    Platform = "Windows NT 5.1"
                    Version = "MSIE 6.0"
                    Pre Platform
                       Token = Value
                    Post Platform
                       Token = Value

記事は言う:

ユーザーエージェントキーのデフォルト値は、ユーザーエージェント文字列で報告されたアプリケーション名とアプリケーションバージョントークンを置き換えます。最初の7文字はアプリケーション名に使用され、残りの文字はアプリケーションバージョントークンを指定することに注意してください。

互換性、プラットフォーム、およびバージョンの値は、ユーザーエージェント文字列内の対応するトークンを置き換えます。

レジストリエディタを使用して、Pre-PlatformキーまたはPost-Platformキーの下に新しい文字列値を作成することにより、ユーザーエージェント文字列にトークンを追加できます。値の名前は完全なトークンである必要があります。値データは無視されます。 Pre-Platformキーに追加されたトークンは、最終的なユーザーエージェント文字列のプラットフォームトークンの前に表示されます。 Post-Platformキーに追加されたトークンは、最後のユーザーエージェント文字列のプラットフォームトークンの後に表示されます。 Pre-PlatformキーまたはPost-Platformキーの複数のトークンが予測できない順序で表示されます。

@Rikによるいくつかの実験では、上記がプラットフォームで機能するはずであることが示されています。これらの値を変更してブラウザを偽装し、これによってWebサイトの動作が変わるかどうかを確認できます。

2
harrymc

私はあなたがWindows8.1を意味すると思います。
その場合、MSはWindows 8.1でIE11のユーザーエージェント文字列を変更し、タッチスクリーン以外のラップトップでも、古いWebサイトでPCをモバイルデバイスとして検出します。解決策があり、実際には回避策があります。 chrome/FFを入手して、ユーザーエージェントスイッチャーアドオンをインストールします。次に、古いブラウザ(私の個人的な推奨事項IE8)を「偽造」して、古いWebサイトをロードします。

それは最善の方法ではないかもしれませんが、私はそれが最も簡単だと確信しています。

1
tumchaaditya