ฉันจะบล็อกสตริงตัวแทนผู้ใช้ใน IE11 ได้อย่างไร


5

เรากำลังเริ่มอัพเกรดแล็ปท็อปของเราเป็นหน้าจอสัมผัส Windows 8 และเรากำลังค้นหาเว็บไซต์เก่า ๆ บางอัน (ที่เราไม่สามารถเปลี่ยนได้) ตรวจจับหน้าจอสัมผัสเป็นอุปกรณ์มือถือและจะไม่โหลดเว็บไซต์อย่างถูกต้อง เรากำลังใช้ IE11 ในโหมดเดสก์ท็อป

มีวิธีที่จะเปลี่ยนสิ่งที่ผู้ใช้ทำธุรกรรมที่เราส่งผ่านไปยังเว็บเซิร์ฟเวอร์หรือไม่?


1
สิ่งนี้อาจมีความเกี่ยวข้องแม้ว่าจะเป็นสำหรับ IE8
Doktoro Reichard

2
คุณใช้ IE11 เวอร์ชั่นใด Modern UIรุ่นหน้าจอสัมผัสเต็มรูปแบบหรือรุ่นเดสก์ทอปเต็มรูปแบบ? ตัวเลือกของคุณขึ้นอยู่กับคำตอบของคุณ
Ramhound

เวอร์ชันเดสก์ท็อป
ไทเลอร์

1
@Tyler - ซึ่งหมายความว่าคุณสามารถใช้ส่วนขยาย IE เพื่อเปลี่ยนตัวแทนผู้ใช้ คุณอาจต้องการลองใช้compatability viewคุณสมบัติ ในที่สุดคุณอาจต้องใช้เบราว์เซอร์อื่นหากไม่สามารถใช้ส่วนขยายเพื่อเปลี่ยนตัวแทนผู้ใช้และไม่สามารถเปลี่ยนเว็บไซต์ได้
Ramhound

ปัญหาคือเว็บไซต์ใช้งานได้กับ IE เท่านั้น และตอนนี้ IE ใหม่กำลังเปลี่ยนแปลงผู้ใช้ถึงฉันคิดว่าเราอาจมีปัญหาจริงๆ ขอขอบคุณ.
ไทเลอร์

คำตอบ:


4

ปัญหาที่เกิดขึ้นกับUAPickจากระบบ Baydenและวิธีการของการใช้ IE11s ของตัวเอง "เครื่องมือสำหรับการพัฒนา" กับ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 )
นี่สำหรับ Windows 8.1 64 บิตที่มี IE11 v11.0.9600.16384

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-information Platformและ "Mozilla" สามารถไม่ถูกแตะต้องเพื่อให้เว็บไซต์สามารถระบุได้อย่างถูกต้อง ฉันยังเพิ่มCompatible-tag อาจจะใช้

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 และ พีซี


แก้ไข :
ดังนั้นปัญหาคือTouchใน:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)

IE ไม่ได้ให้โอกาสคุณในการเปลี่ยน (หรือลบ) ชิ้นส่วนที่เพิ่มเข้ามาเอง เราสามารถเปลี่ยน Compatible, Platform, Version และสามารถเพิ่มโทเค็น Pre และ Post Platform ได้ (แม้ว่า Version จะไม่อยู่ในการส่ง IE11 อีกต่อไปและ Pre และ 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 ด้วย linefeed ดังนั้นมันจะไม่พบมันอย่างแน่นอน: (ฉันพบโซลูชันนี้ที่นี่ )

ทำnotouch.vbs-file ด้วยข้อมูลต่อไปนี้:

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:ส่วน)

หลังจากเรียกใช้งาน. vbs ส่วนแพลตฟอร์มจะมี linefeed และหลังจากนั้นเป็น IGNORE-line มันจะมีลักษณะเช่นนี้ในส่วนหัว:

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ในบรรทัดตัวแทนผู้ใช้;)
(แฮ็ก แต่เฮ้ ... มันใช้งานได้)


1
คุณทำได้ดีมากในการตรวจสอบว่าคำตอบของฉันทำงานได้ดี
harrymc

1
@harrymc ใช่ฉันควรจะพูดถึงพวกเขาในที่เดียวกัน แต่เพราะคุณไม่แน่ใจว่ามันจะใช้กับแพลตฟอร์มของเขาฉันคิดว่าให้ไปได้เลย
ริ

1
ดีหลังจากที่ได้อ่านคำตอบของคุณฉันamแน่ใจจึงเปลี่ยนคำตอบของฉันบอกว่ามันตรวจสอบโดยการทดสอบของคุณ
harrymc

Mozilla / 5.0 (ใช้งานได้; MSIE 9.0; Windows NT 6.1; Trident / 7.0; Touch; LCJB; rv: 11.0) Touch; คือสิ่งที่ทำให้ไซต์เข้าสู่โหมดมือถือ ความคิดใด ๆ เกี่ยวกับวิธีการบล็อกที่?
Tyler

1
@Tyler ฉันเพิ่มการแก้ไขในตอนท้ายของคำตอบของฉัน อีกทั้ง ... คุณลองใช้โหมดความเข้ากันได้แล้วหรือยัง (คุณสามารถเพิ่มไซต์ลงในรายการเพื่อความเข้ากันได้ถาวร) ลองใช้การจัดการกับ UA ด้วยการกดปุ่ม Platform ดังที่อธิบายไว้ในการแก้ไขของฉัน
Rik

2

คุณแน่ใจหรือว่ามันเป็นสตริงตัวแทนผู้ใช้ที่เป็นสาเหตุของปัญหา

หากคุณไม่แน่ใจคุณสามารถใช้Fiddler2เพื่อติดตามและจับการร้องขอ URL พร้อมกับส่วนหัวทั้งหมดและคุณยังสามารถทดลองใน Composer ด้วยการดัดแปลงการปรับแต่งการร้องขอ 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

บทความพูดว่า:

ค่าเริ่มต้นของคีย์ตัวแทนผู้ใช้แทนที่ชื่อแอปพลิเคชันและโทเค็นรุ่นของแอปพลิเคชันที่รายงานในสตริงตัวแทนผู้ใช้ โปรดระวังว่ามีการใช้อักขระเจ็ดตัวแรกสำหรับชื่อแอปพลิเคชันและอักขระที่เหลือจะระบุโทเค็นเวอร์ชันของแอปพลิเคชัน

ค่า Compatible, Platform และ Version จะแทนที่โทเค็นที่สอดคล้องกันในสตริง user-agent

โทเค็นเพิ่มเติมสามารถเพิ่มลงในสตริง user-agent ได้โดยใช้ Registry Editor เพื่อสร้างค่าสตริงใหม่ภายใต้คีย์ Pre-Platform หรือคีย์ Post-Platform ชื่อค่าควรเป็นโทเค็นที่สมบูรณ์ ข้อมูลค่าจะถูกละเว้น โทเค็นที่เพิ่มในคีย์ Pre-Platform ปรากฏขึ้นก่อนที่โทเค็นแพลตฟอร์มในสตริงตัวแทนผู้ใช้ขั้นสุดท้าย โทเค็นที่เพิ่มในคีย์โพสต์แพลตฟอร์มปรากฏขึ้นหลังจากโทเค็นแพลตฟอร์มในสตริงตัวแทนผู้ใช้ขั้นสุดท้าย หลายโทเค็นในคีย์ Pre-Platform หรือคีย์ Post-Platform จะแสดงในลำดับที่ไม่สามารถคาดการณ์ได้

การทดลองโดย @Rik แสดงให้เห็นว่าข้อมูลข้างต้นควรใช้กับแพลตฟอร์มของคุณ คุณสามารถทดลองเปลี่ยนค่าเหล่านี้เพื่อปลอมตัวเบราว์เซอร์ของคุณเพื่อดูว่าการเปลี่ยนแปลงนี้มีผลต่อพฤติกรรมของเว็บไซต์นั้นหรือไม่


ใช่เป็นการเลียนแบบ IE9 หรือใช้ USPick เพื่อตั้งค่าเป็น IE9 แก้ไขปัญหาจนกว่า IE จะรีสตาร์ทอีกครั้ง โดยพื้นฐานแล้วมันเป็นส่วน "UA" แบบสัมผัส "ที่ทำให้ไซต์นั้นแสดงผลใน" โหมดมือถือ "
Tyler

@Tyler: การแก้ไขนี้ยังคงทำงานแม้ว่า IE จะรีสตาร์ทอีกครั้งเพราะมันอยู่ในรีจิสทรี
harrymc

ความเป็นไปได้เพิ่มเติม: (1) ลองใช้วิธีนี้โดยใช้ Local Policy Editor (2) คุณอาจจะลองฟรีUAPick Caveat: ใช้งานได้เฉพาะในโหมดเดสก์ท็อปและต้องปิดใช้งานโหมดการป้องกันขั้นสูง
harrymc

วิธีที่ 2 ได้กล่าวถึงแล้วในความคิดเห็น (และคำตอบของฉัน) และไม่รอดจากการรีสตาร์ท IE11 (ใช้งานได้เหมือนเครื่องมือพัฒนา (F12) ซึ่งไม่รอดจากการรีสตาร์ท) วิธีที่ 1 น่าสนใจ คุณสามารถเพิ่ม "MSIE 9.0" ลงในสตริงตัวแทนผู้ใช้ปกติของคุณ (ในตอนท้าย) หากเว็บไซต์เพียงแค่ทดสอบการมีอยู่ของMSIEสตริงบางทีมันอาจจะให้บริการคุณในเว็บไซต์ที่ถูกต้อง สิ่งนี้จะต้องมีการทดสอบกับเว็บไซต์ที่คำถามนี้ถาม
Rik

@Rik: ขอโทษที่ไม่ได้พูดถึง UAPick สำหรับวิธีการแก้ไขนโยบายท้องถิ่นฉันกำลังรอคำจากผู้โพสต์ว่าจะเพิ่มลงในคำตอบของฉันหรือไม่
harrymc

1

ฉันเดาว่าคุณหมายถึง Windows 8.1
ถ้าเป็นเช่นนั้น MS เปลี่ยนสตริงตัวแทนผู้ใช้สำหรับ IE11 ใน Windows 8.1 และทำให้เว็บไซต์เก่าตรวจพบพีซีเป็นอุปกรณ์พกพาแม้กระทั่งแล็ปท็อปที่ไม่ใช่จอสัมผัส มีวิธีแก้ปัญหาเป็นวิธีแก้ปัญหาที่จะพูดจริง ๆ รับ chrome / FF และติดตั้งส่วนเสริมตัวแทนผู้ใช้ จากนั้น "ปลอม" เบราว์เซอร์เก่าบางตัว (IE peronal Recommendation ของฉัน) เพื่อโหลดเว็บไซต์เก่า ๆ

นั่นอาจไม่ใช่วิธีที่ดีที่สุด แต่ฉันมั่นใจว่ามันเป็นวิธีที่ง่ายที่สุด


1
เพียงเพิ่ม $ 0.02 ของฉัน: ใช่ทำงานได้กับเว็บไซต์จำนวนมาก แต่มันขึ้นอยู่กับเว็บไซต์ที่อ้างว่า "ฉันทำงานกับ IE เท่านั้น" ซึ่งพวกเขาหมายถึง "ฉันยังทำงานกับเบราว์เซอร์อื่น ๆ แต่ฉันได้รับการทดสอบกับ IE เท่านั้นและถ้าคุณแสดงชื่ออื่นของฉันฉันจะอ้างว่าไม่ทำงาน" .
Hennes

1
ซึ่งดูเหมือนจะเป็นกรณีที่นี่เนื่องจากเว็บไซต์เปลี่ยนเส้นทางไปเป็นรุ่นมือถือ ... ตั้งแต่อัปเดตเป็น Windows 8.1 ฉันได้รับประสบการณ์การทำงานนี้กับเว็บไซต์ที่ทำตัวเป็นอย่างดีเช่นกัน ..
tumchaaditya
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.