ตั้งค่าพร็อกซี่บน macOS: วิธีตั้งค่าผ่าน System Settings และ Terminal ไม่ให้ทราฟฟิครั่วไหลผ่านรายการยกเว้น
บทความ
- บทนำ: คุณจะได้อะไรจากบทความนี้
- การเตรียมตัวล่วงหน้า
- แนวคิดพื้นฐาน: สิ่งที่ต้องเข้าใจก่อนเริ่ม
- ขั้นตอนที่ 1: ตรวจสอบข้อมูลพร็อกซี่ก่อนตั้งค่าระบบ
- ขั้นตอนที่ 2: ตั้งค่าพร็อกซี่ผ่าน system settings บน macos
- ขั้นตอนที่ 3: ตั้งค่ารายการยกเว้นให้ถูกต้อง
- ขั้นตอนที่ 4: จัดการพร็อกซี่จาก terminal ด้วยคำสั่ง networksetup
- ขั้นตอนที่ 5: ตั้งค่าพร็อกซี่สำหรับ curl, git, homebrew, pip และ npm
- ขั้นตอนที่ 6: หาทราฟฟิคที่วิ่งอ้อมพร็อกซี่และแก้ไข
- ตรวจสอบผลลัพธ์: เช็คลิสต์สุดท้าย
- ข้อผิดพลาดทั่วไปและวิธีแก้
- ความสามารถเพิ่มเติมสำหรับผู้ใช้ระดับสูง
- Faq: คำถามที่พบบ่อยเกี่ยวกับพร็อกซี่บน macos
- สรุป
บทนำ: คุณจะได้อะไรจากบทความนี้
ถ้าคุณทำงานกับพร็อกซี่มือถือบน Mac ไม่ช้าก็เร็วคุณจะเจอสถานการณ์เดิมๆ คุณใส่ที่อยู่และพอร์ตในตั้งค่า Wi-Fi เว็บโชว์ IP ใหม่ คุณดีใจ แต่แล้วก็พบว่า Terminal ดาวน์โหลดแพ็กเกจตรงๆ git ยังใช้ที่อยู่เดิม และแอปครึ่งหนึ่งก็ไม่รู้ตัวว่ามีการเปลี่ยนแปลง คู่มือนี้แก้ปัญหานั้นทั้งหมด
หลังจากอ่านและทำตามทุกขั้นตอน คุณจะได้พร็อกซี่บน macOS ที่ทำงานใน 3 ระดับพร้อมกัน:
- ระดับระบบ: Safari, Chrome, เมล, แอปแชท และโปรแกรมอื่นๆ ที่ใช้การตั้งค่าระบบ
- ระดับ Terminal: คำสั่ง networksetup สำหรับเปิด ปิด และสลับพร็อกซี่โดยไม่ต้องคลิกเมาส์เลย
- ระดับเครื่องมือนักพัฒนา: curl, git, Homebrew, pip, npm และยูทิลิตี้อื่นๆ ที่อ่านตัวแปรสภาพแวดล้อม ไม่ใช่การตั้งค่าระบบ
เราจะแยกส่วนเรื่องรายการยกเว้นออกมาต่างหาก นี่คือช่องที่ทำให้ทราฟฟิคบางส่วนวิ่งอ้อมพร็อกซี่ ทั้งที่คุณไม่ได้ตั้งค่าอะไรเป็นพิเศษ คุณจะเข้าใจว่ามันทำงานยังไง ควรใส่อะไร ควรเอาอะไรออก และตรวจสอบยังไงว่าไม่มีคำขอไหนเล็ดลอดออกไปตรงๆ ในที่ที่ไม่ควร
คู่มือนี้เหมาะกับใคร
คู่มือนี้เขียนสำหรับผู้เริ่มต้น ถ้าคุณไม่เคยเปิด Terminal ไม่เป็นไรเลย เพราะเราจะอธิบายทุกคำสั่งแบบคำต่อคำว่ามันทำอะไร คู่มือนี้มีประโยชน์กับ:
- นักการตลาดและผู้เชี่ยวชาญ SMM ที่ดูแลหลายโปรเจกต์จาก IP ต่างๆ
- นักไกล่เกลี่ยโฆษณาที่ต้องสลับ geo และเช็คครีเอทีฟอย่างรวดเร็ว
- นักพัฒนาที่ทดสอบแอปและ API ผ่านพร็อกซี่มือถือ
- เจ้าของธุรกิจที่อยากเข้าใจครั้งเดียวแล้วไม่ต้องเรียกผู้เชี่ยวชาญทุกครั้งที่เปลี่ยนพร็อกซี่
สำหรับผู้ใช้ระดับสูง ในตอนท้ายมีบล็อกเทคนิคขั้นสูง: ตำแหน่งเครือข่าย ไฟล์ PAC alias ในเชลล์ และสคริปต์หมุน IP อัตโนมัติ
สิ่งที่ต้องรู้ล่วงหน้า
ไม่มีอะไรยาก แค่เปิด System Settings และคัดลอกข้อความได้ก็พอ ที่เหลือเราจะอธิบายไปเรื่อยๆ เราไม่แตะการตั้งค่าเบราว์เซอร์เฉพาะหรือเบราว์เซอร์แอนตี้ดีเทค เพราะในบล็อกมีเนื้อหาแยกสำหรับเรื่องนั้น ที่นี่พูดถึงแค่ macOS ในฐานะระบบปฏิบัติการและเครื่องมือที่มีมาให้
ใช้เวลานานแค่ไหน
การตั้งค่าพื้นฐานผ่าน System Settings ใช้เวลา 10 นาที ตั้งค่า Terminal และเครื่องมือนักพัฒนาอีก 15-20 นาที ตรวจสอบทั้งหมดและจัดการรายการยกเว้นอีกราว 10 นาที รวมแล้ว 30-40 นาที ถ้าทำแบบใจเย็นและตรวจสอบไปด้วย
การเตรียมตัวล่วงหน้า
ก่อนจะเปลี่ยนอะไรในระบบ มารวบรวมทุกอย่างที่ต้องใช้กันก่อน การเตรียมตัวที่ดีประหยัดเวลาได้มากกว่าเคล็ดลับไหนๆ
สิ่งที่ต้องเตรียม
- Mac ที่ใช้ macOS Ventura 13 ขึ้นไป ตัวอย่างทั้งหมดทดสอบบน macOS Sonoma 14, Sequoia 15 และ Tahoe 26 บนเวอร์ชันเก่าที่ System Settings เป็นตารางไอคอน เส้นทางไปพร็อกซี่จะต่างนิดหน่อย เราจะระบุความแตกต่างไว้ต่างหาก
- ข้อมูลพร็อกซี่มือถือ คือที่อยู่เซิร์ฟเวอร์ (โดเมนหรือ IP), พอร์ต, ล็อกอิน และรหัสผ่าน พร็อกซี่มือถือมักมีสองพอร์ต: อันหนึ่งสำหรับโปรโตคอล HTTP อีกอันสำหรับ SOCKS5 เก็บทั้งสองไว้ให้พร้อม
- ลิงก์เปลี่ยน IP ถ้าผู้ให้บริการมีให้ มันจะมีประโยชน์ในส่วนการทำงานอัตโนมัติ
- สิทธิ์ผู้ดูแลระบบบน Mac การเปลี่ยนพร็อกซี่ระบบผ่าน Terminal นั้น macOS จะขอรหัสผ่านผู้ใช้
- โปรแกรมแก้ไขข้อความ สำหรับจดโน้ต ใช้ TextEdit หรือ Notes ที่มีมาให้ก็ได้
สิ่งที่ต้องตรวจสอบก่อนเริ่ม
- ตรวจสอบว่าอินเทอร์เน็ตทำงานได้โดยไม่มีพร็อกซี่ เปิดเว็บอะไรก็ได้ใน Safari ถ้าเปิดไม่ได้ ให้แก้ปัญหาเครือข่ายก่อน ไม่งั้นภายหลังจะไม่รู้ว่าอะไรเสียกันแน่
- ดูว่าคุณเชื่อมต่อผ่านอินเทอร์เฟซไหน: Wi-Fi หรือสาย Ethernet เปิด System Settings แล้วไปที่หมวด Network การเชื่อมต่อที่ใช้งานจะถูกทำเครื่องหมายด้วยจุดสีเขียวและคำว่า Connected จดชื่อไว้ ปกติจะเป็น Wi-Fi หรือ Ethernet
- ตรวจสอบ IP ปัจจุบันของคุณที่ไม่มีพร็อกซี่ เปิดบริการเช็ค IP ในเบราว์เซอร์แล้วจดที่อยู่ไว้ เราจะใช้เทียบกับผลลัพธ์
สำรองการตั้งค่าปัจจุบัน
การตั้งค่าพร็อกซี่บน macOS นั้นย้อนกลับได้ง่าย แต่ควรบันทึกสถานะเริ่มต้นไว้ก่อน โดยเฉพาะถ้าคุณใช้ Mac ของบริษัทที่ผู้ดูแลระบบอาจตั้งค่าอะไรไว้ล่วงหน้า
- เปิด Terminal กด Command และ Space พิมพ์คำว่า Terminal แล้วกด Enter
- คัดลอกและวางคำสั่งนี้ แล้วกด Enter:
scutil --proxy > ~/Desktop/proxy_backup.txtไฟล์ proxy_backup.txt จะปรากฏบน Desktop พร้อมคำอธิบายการตั้งค่าพร็อกซี่ปัจจุบันทั้งหมด ถ้าคุณทำอะไรพัง ก็เทียบกับไฟล์นี้ได้เสมอ
เคล็ดลับ: สร้างการ์ดใน Notes ทันทีที่เก็บข้อมูลพร็อกซี่: โฮสต์, พอร์ต HTTP, พอร์ต SOCKS5, ล็อกอิน, รหัสผ่าน, ลิงก์หมุน IP คุณจะเปิดดูมันหลายสิบครั้ง อย่าเก็บรหัสผ่านแบบเปิดเผยในเอกสารที่แชร์กัน
แนวคิดพื้นฐาน: สิ่งที่ต้องเข้าใจก่อนเริ่ม
นี่คือคำศัพท์บางคำที่ถ้าไม่รู้ ขั้นตอนต่อไปจะกลายเป็นเวทมนตร์ ต้องอ่านให้จบ แม้จะรู้สึกว่ารู้แล้วก็ตาม
พร็อกซี่เซิร์ฟเวอร์
มันคือตัวกลางระหว่าง Mac ของคุณกับอินเทอร์เน็ต แทนที่จะไปที่เว็บตรงๆ คำขอของคุณจะวิ่งไปที่พร็อกซี่เซิร์ฟเวอร์ก่อน แล้วค่อยไปที่เว็บ เว็บจะเห็น IP ของพร็อกซี่ ไม่ใช่ของคุณ พร็อกซี่มือถือต่างตรงที่ IP ของมันเป็นของผู้ให้บริการเครือข่ายมือถือ และเว็บจะมองคุณเป็นผู้ใช้สมาร์ทโฟนธรรมดาคนหนึ่ง
พร็อกซี่ HTTP กับ SOCKS5
นี่คือสองวิธีสื่อสารกับพร็อกซี่เซิร์ฟเวอร์ที่ต่างกัน พร็อกซี่ HTTP เข้าใจทราฟฟิคเว็บ ทำงานกับเว็บและแอปส่วนใหญ่ บน macOS มันแบ่งเป็นสองสวิตช์: Web Proxy (HTTP) สำหรับเว็บทั่วไป และ Secure Web Proxy (HTTPS) สำหรับเว็บที่เข้ารหัส ในทางปฏิบัติใส่ที่อยู่และพอร์ตเดียวกันในทั้งสองช่อง
พร็อกซี่ SOCKS5 ทำงานต่ำกว่าในระดับการเชื่อมต่อ และส่งทราฟฟิคอะไรก็ได้ ไม่ใช่แค่เว็บ มันมีประโยชน์กับ Terminal แอปแชท เกม ข้อควรระวังสำคัญของ macOS: การตั้งค่าระบบอนุญาตให้ระบุล็อกอินและรหัสผ่านสำหรับ SOCKS ได้ แต่แอปหลายตัวไม่รองรับการยืนยันตัวตนผ่าน SOCKS ของระบบ ดังนั้นในการตั้งค่าระบบ เราจะใช้ HTTP และเก็บ SOCKS5 ไว้สำหรับ Terminal และโปรแกรมเฉพาะ
พร็อกซี่ระบบ
นี่คือการตั้งค่าที่ macOS เก็บไว้สำหรับอินเทอร์เฟซเครือข่ายแต่ละอัน Safari, Chrome, Mail, App Store และแอปส่วนใหญ่ที่เขียนด้วย Swift และ Objective-C จะอ่านมันอัตโนมัติ แต่ไม่ใช่ทุกตัว โปรแกรมที่เขียนด้วย Python, Go, Node.js รวมทั้งยูทิลิตี้ Unix แบบดั้งเดิมอย่าง curl และ git จะไม่สนใจการตั้งค่าระบบ พวกมันจะดูที่ตัวแปรสภาพแวดล้อมแทน
ตัวแปรสภาพแวดล้อม
คือค่าที่มีชื่อ อาศัยอยู่ในเซสชัน Terminal ของคุณ ตัวอย่างเช่น ตัวแปร http_proxy บอกยูทิลิตี้ว่า: ทราฟฟิค HTTP ทั้งหมดให้ส่งไปที่นี่ ตัวแปรจะมีอยู่แค่ในหน้าต่าง Terminal ที่เปิดอยู่ ถ้าไม่บันทึกในไฟล์ตั้งค่าของเชลล์ จะมีขั้นตอนแยกเรื่องนี้
รายการยกเว้น
บน macOS มันเรียกว่า Bypass proxy settings for these Hosts & Domains ที่อยู่ทั้งหมดในรายการนี้ ระบบจะส่งตรงโดยข้ามพร็อกซี่ โดยค่าเริ่มต้นมี *.local และ 169.254/16 อยู่แล้ว ซึ่งดูแลเครือข่ายท้องถิ่นและไม่ควรลบ ปัญหาจะเริ่มเมื่อมีมาสก์เกินเข้ามาในรายการ หรือเมื่อคุณหวังว่ารายการยกเว้นจะทำงานใน Terminal มันจะไม่ทำงาน เพราะ Terminal มีรายการของตัวเองคือตัวแปร no_proxy เราจะอธิบายทั้งหมด
บริการเครือข่าย
นี่คือสิ่งที่ macOS เรียกว่าอินเทอร์เฟซแต่ละอัน: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB พร็อกซี่ตั้งค่าแยกสำหรับแต่ละบริการ ถ้าคุณตั้งค่า Wi-Fi แล้วภายหลังต่อสาย พร็อกซี่จะหยุดทำงาน นี่คือสาเหตุที่พบบ่อยที่สุดของคำถามว่าทำไมพร็อกซี่บน macOS บางทีก็ใช้ได้ บางทีก็ใช้ไม่ได้
ขั้นตอนที่ 1: ตรวจสอบข้อมูลพร็อกซี่ก่อนตั้งค่าระบบ
เป้าหมายของขั้นนี้: ตรวจสอบว่าพร็อกซี่ใช้งานได้ และล็อกอินกับรหัสผ่านถูกต้อง ช่วยประหยัดเวลาครึ่งชั่วโมงในการหาข้อผิดพลาดในตั้งค่า ทั้งที่ปัญหาอยู่ที่พิมพ์รหัสผ่านผิด
เราจะตรวจสอบผ่าน curl ยูทิลิตี้นี้มีมาใน macOS แล้ว ไม่ต้องติดตั้งอะไร
- เปิด Terminal ถ้ายังไม่ได้เปิด
- ดึงข้อมูลพร็อกซี่จากการ์ดของคุณ สำหรับตัวอย่างเราจะใช้ค่าสมมติ: โฮสต์ proxy.example.net, พอร์ต HTTP 10000, พอร์ต SOCKS5 10001, ล็อกอิน user123, รหัสผ่าน pass456 ให้ใส่ข้อมูลจริงของคุณ แทนค่าเหล่านี้
- พิมพ์คำสั่งเพื่อตรวจสอบพอร์ต HTTP แล้วกด Enter:
curl -x http://user123:pass456@proxy.example.net:10000 https://ifconfig.meมาดูกันว่าข้างบนเขียนว่าอะไร คีย์ -x บอก curl ว่าที่อยู่พร็อกซี่อยู่ตรงไหน ต่อมาคือโปรโตคอล http แล้วล็อกอิน, ทวิภาค, รหัสผ่าน, เครื่องหมาย @, โฮสต์, ทวิภาค, พอร์ต สุดท้ายคือที่อยู่ของบริการที่จะตอบกลับด้วย IP ที่คำขอมาจาก
- ภายใน 1-3 วินาที จะมี IP ปรากฏใน Terminal นี่คือ IP ของพร็อกซี่มือถือคุณ ถ้ามันต่างจากที่จดไว้ตอนเตรียมตัว ทุกอย่างทำงานได้
- ตอนนี้ตรวจสอบพอร์ต SOCKS5 ด้วยคำสั่งเดิม เปลี่ยนโปรโตคอลและพอร์ต:
curl -x socks5h://user123:pass456@proxy.example.net:10001 https://ifconfig.meสังเกตตัวอักษร h ในคำว่า socks5h มันหมายความว่าชื่อโดเมนจะถูกแปลงที่ฝั่งพร็อกซี่ ไม่ใช่บน Mac ของคุณ สำหรับพร็อกซี่มือถือ นี่คือตัวเลือกที่ถูกต้อง เพราะคุณจะไม่ทิ้งคำขอ DNS ไว้กับผู้ให้บริการอินเทอร์เน็ตบ้านของคุณ
ข้อควรระวัง: ถ้าในรหัสผ่านมีเครื่องหมาย @, ทวิภาค, สแลช, แฮช, เครื่องหมายคำถาม หรือเปอร์เซ็นต์ ต้องเข้ารหัสก่อน เปลี่ยน @ เป็น %40, ทวิภาคเป็น %3A, แฮชเป็น %23, เครื่องหมายคำถามเป็น %3F, เปอร์เซ็นต์เป็น %25 ไม่งั้น curl จะแบ่งสตริงผิดและคิดว่ารหัสผ่านจบก่อนเวลา
ปัญหาที่อาจเจอในขั้นนี้
- ตอบกลับ Received HTTP code 407 from proxy after CONNECT พร็อกซี่ปฏิเสธการยืนยันตัวตน ตรวจสอบล็อกอินและรหัสผ่าน ดูอักขระพิเศษให้ดี ตรวจสอบว่าในหน้าผู้ให้บริการไม่ได้เปิดใช้การยืนยันตัวตนด้วย IP แทนล็อกอินและรหัสผ่าน
- ตอบกลับ Failed to connect หรือ Connection timed out โฮสต์หรือพอร์ตผิด หรือพร็อกซี่ปิดอยู่ เทียบกับหน้าผู้ให้บริการ ลองพอร์ตอื่น
- คำสั่งค้างไม่มีผลลัพธ์ รอ 30 วินาที เครือข่ายมือถือบางทีช้า ถ้าไม่มีอะไรเกิดขึ้น กด Control และ C เพื่อยกเลิก แล้วตรวจสอบข้อมูล
การตรวจสอบ: คำสั่ง curl ทั้งสองคืนค่า IP ที่ต่างจาก IP บ้านของคุณ ไปต่อได้เลย ถ้ามีอันใดอันหนึ่งไม่ทำงาน ไปต่อก็ไม่มีประโยชน์ เพราะระบบจะใช้ข้อมูลเดียวกัน
ขั้นตอนที่ 2: ตั้งค่าพร็อกซี่ผ่าน System Settings บน macOS
เป้าหมายของขั้นนี้: ทำให้ Safari, Chrome และแอปทั้งหมดที่ใช้พร็อกซี่ระบบ ออกอินเทอร์เน็ตผ่านพร็อกซี่มือถือของคุณ
เปิดหน้าจอที่ต้องการ
- คลิกไอคอน Apple ที่มุมซ้ายบนของหน้าจอ แล้วเลือก System Settings
- ในคอลัมน์ซ้าย คลิก Wi-Fi ถ้าเชื่อมต่อแบบไร้สาย ถ้าใช้สาย คลิก Network แล้วเลือก Ethernet
- หาชื่อเครือข่ายของคุณ ทางขวามีปุ่ม Details แบบจุดสามจุดหรือข้อความ คลิกมัน
- หน้าต่างที่มีพารามิเตอร์การเชื่อมต่อจะเปิดขึ้น ในคอลัมน์ซ้ายของหน้าต่างนี้ เลือก Proxy อยู่ล่างสุดของรายการ หลัง TCP/IP, DNS และ WINS
คุณจะเห็นรายการสวิตช์: Auto Discovery Proxy, Automatic Proxy Configuration, Web Proxy (HTTP), Secure Web Proxy (HTTPS), FTP Proxy, SOCKS Proxy, Streaming Proxy (RTSP), Gopher Proxy ด้านล่างมีช่อง Bypass proxy settings for these Hosts & Domains
ถ้าใช้ macOS เก่าที่ System Settings เป็นตารางไอคอน เส้นทางคือ: System Settings, Network, เลือกอินเทอร์เฟซทางซ้าย, ปุ่ม Advanced, แท็บ Proxies จากนั้นทุกอย่างเหมือนกัน
เปิดพร็อกซี่ HTTP
- คลิกสวิตช์ Web Proxy (HTTP) มันจะกลายเป็นสีน้ำเงิน และมีช่องให้กรอกปรากฏขึ้นด้านล่าง
- ในช่อง Server ใส่โฮสต์พร็อกซี่ เช่น proxy.example.net ไม่ต้องมี http:// ไม่ต้องมีสแลช ใส่แค่โฮสต์
- ในช่อง Port ทางขวาใส่พอร์ต HTTP เช่น 10000
- เปิดสวิตช์ Proxy server requires password
- ในช่อง Username ใส่ล็อกอิน ในช่อง Password ใส่รหัสผ่าน ตรงนี้ไม่ต้องเข้ารหัสอักขระพิเศษ ใส่ตามจริงได้เลย
เปิดพร็อกซี่ HTTPS
เว็บส่วนใหญ่ในปัจจุบันใช้ HTTPS ดังนั้นข้อนี้จำเป็นมาก ถ้าไม่มี ทราฟฟิคที่เข้ารหัสจะวิ่งตรง และคุณจะสงสัยว่าทำไมบางเว็บเห็นพร็อกซี่ แต่บางเว็บเห็น IP จริงของคุณ
- คลิกสวิตช์ Secure Web Proxy (HTTPS)
- ใส่โฮสต์และพอร์ตเดียวกันเป๊ะกับ HTTP พร็อกซี่มือถือจัดการทั้งสองแบบบนพอร์ตเดียว
- เปิด Proxy server requires password ใส่ล็อกอินและรหัสผ่านอีกครั้ง
เรื่องพร็อกซี่ SOCKS และสวิตช์อื่นๆ
ปล่อยสวิตช์ SOCKS Proxy ในตั้งค่าระบบให้ปิดไว้ ถ้าคุณเปิด HTTP และ HTTPS อยู่ เหตุผลคือเมื่อเปิด SOCKS ของระบบ แอปบางตัวจะเริ่มชอบใช้มัน แต่การยืนยันตัวตนผ่าน SOCKS ของระบบนั้นไม่รองรับในทุกแอป ผลคือโปรแกรมบางตัวขาดการเข้าถึงเครือข่าย FTP, RTSP และ Gopher ไม่ต้องแตะ เป็นโปรโตคอลเก่า Auto Discovery และ Automatic Proxy Configuration ก็ปล่อยปิดไว้ ไม่งั้นอาจเขียนทับค่าที่คุณตั้งมือ
บันทึก
- คลิกปุ่ม OK ที่มุมขวาล่างของหน้าต่าง
- ถ้าระบบขอรหัสผ่านผู้ใช้ Mac ให้ใส่ เป็นเรื่องปกติ เพราะการเปลี่ยนการตั้งค่าเครือข่ายต้องใช้สิทธิ์ผู้ดูแล
- ปิด Safari หรือ Chrome ให้สนิท แล้วเปิดใหม่ เบราว์เซอร์แคชการตั้งค่าพร็อกซี่ตอนเปิด
เคล็ดลับ: ตอนเรียกใช้ครั้งแรกผ่านพร็อกซี่ macOS อาจแสดงหน้าต่างขอให้ใส่ล็อกอินและรหัสผ่านพร็อกซี่ แม้คุณจะใส่ไปแล้วก็ตาม ใส่ข้อมูลและติ๊ก Remember in Keychain หลังจากนั้นหน้าต่างนี้จะไม่ปรากฏอีก
การตรวจสอบ: เปิดบริการเช็ค IP ใน Safari ที่อยู่ควรตรงกับที่คำสั่ง curl คืนค่ามาในขั้นตอนที่ 1 ตรวจสอบหน้าดูผู้ให้บริการด้วย ควรแสดงเครือข่ายมือถือ ไม่ใช่ผู้ให้บริการอินเทอร์เน็ตบ้านของคุณ
ปัญหาที่อาจเจอ
- เว็บเปิดไม่ได้เลย ตรวจสอบว่าคุณเปิด HTTP และ HTTPS ไม่ใช่ FTP หรือ SOCKS ตรวจสอบพอร์ต ปิดสวิตช์ทั้งสองชั่วคราวและดูว่าอินเทอร์เน็ตกลับมาไหม เพื่อให้รู้ว่าปัญหาอยู่ที่ตั้งค่าพร็อกซี่ ไม่ใช่ที่เครือข่าย
- หน้าต่างขอรหัสผ่านเด้งตลอด ใส่รหัสผ่านผิด หรือมีช่องว่างต่อท้ายจากการคัดลอก ลบเนื้อหาในช่อง พิมพ์รหัสผ่านใหม่ด้วยมือ
- IP ไม่เปลี่ยน คุณอาจตั้งค่าผิดอินเทอร์เฟซ กลับไปที่หมวด Network แล้วดูว่าบริการไหนถูกทำเครื่องหมาย Connected
ขั้นตอนที่ 3: ตั้งค่ารายการยกเว้นให้ถูกต้อง
เป้าหมายของขั้นนี้: เข้าใจว่าทราฟฟิคอะไรที่ระบบส่งตรงโดยข้ามพร็อกซี่ และตั้งค่ารายการให้บริการท้องถิ่นทำงานได้ แต่ทราฟฟิคภายนอกไม่รั่ว
ช่อง Bypass proxy settings for these Hosts & Domains อยู่ด้านล่างของหน้าจอ Proxy โดยค่าเริ่มต้นจะเขียนว่า: *.local, 169.254/16 ผู้ใช้หลายคนไม่มองมันเลย หรือไม่ก็เริ่มเขียนอะไรก็ได้ลงไป
วิธีอ่านรายการ
- *.local หมายถึงที่อยู่ทั้งหมดที่ลงท้ายด้วย .local นี่คืออุปกรณ์ในเครือข่ายบ้านคุณ: เครื่องพิมพ์, ดิสก์เครือข่าย, Mac อื่นๆ พวกนี้เปิดผ่านพร็อกซี่ภายนอกไม่ได้ทางกายภาพ จึงต้องมีรายการนี้
- 169.254/16 หมายถึงช่วงที่อยู่บริการที่ Mac ตั้งให้ตัวเองเมื่อไม่ได้รับที่อยู่จากเราเตอร์ ก็เป็นเรื่องท้องถิ่นเช่นกัน
- แต่ละรายการคั่นด้วยเครื่องหมายจุลภาค มีช่องว่างหลังจุลภาคได้
- เครื่องหมายดาวแทนส่วนใดก็ได้ของชื่อ บันทึก *.example.com จะยกเว้นซับโดเมนทั้งหมดของ example.com แต่ไม่ใช่ example.com เอง ต้องมีบันทึกแยก
- ระบุ IP และซับเน็ตในรูปแบบ address/mask ได้ เช่น 192.168.0.0/16 สำหรับเครือข่ายบ้านทั้งหมด
สิ่งที่ควรเพิ่ม
- คลิกในช่องยกเว้นหลังรายการสุดท้าย
- เพิ่ม localhost และ 127.0.0.1 คั่นด้วยจุลภาค ถ้าไม่มี เว็บเซิร์ฟเวอร์ท้องถิ่นของนักพัฒนาและแผงแอดมินบน Mac ของคุณจะพยายามวิ่งผ่านพร็อกซี่มือถือและพัง
- ถ้าคุณใช้อุปกรณ์บ้านผ่าน IP ให้เพิ่มซับเน็ตท้องถิ่นของคุณ ปกติจะเป็น 192.168.0.0/16 หรือ 10.0.0.0/8 ดูที่อยู่ท้องถิ่นของคุณได้ที่หน้าจอ TCP/IP ในหน้าต่างเดียวกัน
- คลิก OK
รายการสุดท้ายสำหรับผู้ใช้ส่วนใหญ่จะเป็นแบบนี้: *.local, 169.254/16, localhost, 127.0.0.1, 192.168.0.0/16
สิ่งที่ไม่ควรเพิ่ม
ตรงนี้คือจุดที่ชื่อเรื่องเรียกว่าการหลบเลี่ยงรายการยกเว้น มันเกี่ยวกับสถานการณ์ที่ทราฟฟิควิ่งอ้อมพร็อกซี่ไม่ใช่เพราะคุณต้องการ แต่เพราะรายการถูกเขียนไม่เรียบร้อย
- อย่าใส่ดาวเดี่ยวๆ หรือ *.com มาสก์แบบนี้จะปิดพร็อกซี่เกือบทั้งอินเทอร์เน็ต แต่สวิตช์ยังเป็นสีน้ำเงิน และคุณจะคิดว่าทุกอย่างทำงาน
- อย่าใส่โดเมนของบริการที่คุณทำงานด้วย ถ้าคุณเพิ่ม *.facebook.com เพื่อให้โหลดเร็วขึ้น เว็บจะเห็น IP จริงของคุณ สำหรับงานหลายบัญชี นี่เป็นเรื่องวิกฤต
- อย่าใส่โฮสต์ของพร็อกซี่เอง ไม่มีเหตุผล เพราะการเชื่อมต่อไปยังพร็อกซี่ก็วิ่งตรงอยู่แล้ว
- อย่าลบ *.local และ 169.254/16 AirDrop, การพิมพ์, การเข้าถึงเราเตอร์จะพัง
ข้อควรระวัง: รายการยกเว้นในตั้งค่าระบบมีผลเฉพาะกับแอปที่ใช้พร็อกซี่ระบบ Terminal, curl, git และสคริปต์ Python ไม่เห็นมัน พวกมันมีรายการของตัวเองคือตัวแปร no_proxy ซึ่งตั้งค่าแยก เราจะไปถึงมันในขั้นตอนที่ 5 ถ้าคุณหวังว่าบันทึกในรายการระบบจะมีผลกับสคริปต์ คุณจะผิดหวัง
เคล็ดลับ: เปิดรายการยกเว้นดูด้วยตาบ้างเป็นระยะ ยูทิลิตี้ของบริษัทและเอเจนต์จัดการอุปกรณ์บางตัวจะเขียนโดเมนของมันลงไปตอนติดตั้ง การเจอมาสก์เกินอย่าง *.com ในสิบวินาทีง่ายกว่าการหาเหตุผลของ IP รั่วเป็นอาทิตย์
การตรวจสอบ: เปิดที่อยู่ http://localhost หรือหน้าเว็บท้องถิ่นที่มีในเบราว์เซอร์ มันควรเปิดทันทีโดยไม่มีข้อผิดพลาดพร็อกซี่ จากนั้นเปิดบริการเช็ค IP ภายนอก มันควรยังแสดง IP ของพร็อกซี่มือถือ
ขั้นตอนที่ 4: จัดการพร็อกซี่จาก Terminal ด้วยคำสั่ง networksetup
เป้าหมายของขั้นนี้: เรียนรู้วิธีเปิด ปิด และเปลี่ยนพร็อกซี่ระบบด้วยคำสั่งเดียว ไม่ต้องใช้เมาส์ ไม่ต้องคลิกสิบครั้ง นี่คือทักษะที่จะคืนทุนในหนึ่งเดือนสำหรับเวลาที่อ่านส่วนนี้
macOS มียูทิลิตี้ในตัวชื่อ networksetup มันทำสิ่งเดียวกับ System Settings แต่จากบรรทัดคำสั่ง ทุกอย่างที่คุณตั้งค่าในขั้นตอนที่ 2 ทำซ้ำ เปลี่ยน หรือยกเลิกด้วยบรรทัดเดียวได้
หาชื่อบริการเครือข่ายให้แม่น
- ใน Terminal พิมพ์คำสั่งแล้วกด Enter:
networksetup -listallnetworkservicesคุณจะเห็นรายการเช่น: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB หาอันที่คุณเชื่อมต่ออยู่ ต่อไปในคำสั่งเราจะใช้ Wi-Fi ถ้าบริการของคุณชื่ออื่น ให้ใส่ชื่อนั้นแทน ถ้าชื่อมีช่องว่าง เช่น Thunderbolt Bridge ให้ครอบด้วยเครื่องหมายคำพูดคู่
ดูการตั้งค่าปัจจุบัน
networksetup -getwebproxy Wi-Fiผลลัพธ์จะมีสี่บรรทัด: Enabled: Yes หรือ No, Server, Port, Authenticated Proxy Enabled ถ้าคุณทำขั้นตอนที่ 2 แล้ว Enabled จะเป็น Yes และเซิร์ฟเวอร์กับพอร์ตจะตรงกับที่ใส่ไป เช่นเดียวกันสำหรับ HTTPS:
networksetup -getsecurewebproxy Wi-Fiเปิดพร็อกซี่ HTTP และ HTTPS ด้วยคำสั่งเดียว
รูปแบบคำสั่ง: networksetup, การกระทำ, บริการ, โฮสต์, พอร์ต, เปิดการยืนยันตัวตน, ล็อกอิน, รหัสผ่าน
networksetup -setwebproxy Wi-Fi proxy.example.net 10000 on user123 pass456networksetup -setsecurewebproxy Wi-Fi proxy.example.net 10000 on user123 pass456พิมพ์ทั้งสองคำสั่งตามลำดับ หลังแต่ละอันระบบอาจขอรหัสผ่านผู้ใช้ Mac ใส่ไป อักขระจะไม่แสดงตอนพิมพ์ เป็นเรื่องปกติ กด Enter
คำว่า on หลังพอร์ตเปิดการยืนยันตัวตน ถ้าพร็อกซี่ของคุณยืนยันตัวตนด้วย IP ไม่ใช่ล็อกอิน ให้เขียน off และไม่ต้องใส่ล็อกอินกับรหัสผ่าน
ปิดและเปิดพร็อกซี่โดยไม่สูญเสียการตั้งค่า
คู่คำสั่งที่มีประโยชน์ที่สุด พวกมันไม่ลบโฮสต์และพอร์ต แค่เลื่อนสวิตช์:
networksetup -setwebproxystate Wi-Fi offnetworksetup -setsecurewebproxystate Wi-Fi offถ้าจะเปิดกลับ เปลี่ยน off เป็น on แค่นี้คุณก็สลับ Mac ไปโหมดเชื่อมต่อตรงและกลับมาได้ในสองวินาที
จัดการรายการยกเว้นจาก Terminal
ดูรายการปัจจุบัน:
networksetup -getproxybypassdomains Wi-Fiตั้งรายการใหม่ทั้งหมด คำสั่งจะแทนที่ทุกบันทึก ดังนั้นให้ระบุชุดเต็มคั่นด้วยช่องว่าง:
networksetup -setproxybypassdomains Wi-Fi "*.local" "169.254/16" localhost 127.0.0.1 "192.168.0.0/16"บันทึกที่มีดาวและสแลชให้ใส่เครื่องหมายคำพูด เพื่อไม่ให้เชลล์ตีความ ล้างรายการทั้งหมดได้ด้วยคำว่า Empty แทนโดเมน แต่ระวัง: ที่อยู่ท้องถิ่นจะวิ่งผ่านพร็อกซี่และหยุดทำงาน
คำสั่งดูภาพรวมแบบสากล
ยูทิลิตี้ scutil แสดงการตั้งค่าพร็อกซี่ทั้งหมดในที่เดียว รวมถึงรายการยกเว้น:
scutil --proxyมองหาบรรทัด HTTPEnable, HTTPProxy, HTTPPort, HTTPSEnable, ExceptionsList ค่า 1 หมายถึงเปิด ค่า 0 หมายถึงปิด นี่คือคำสั่งที่เราใช้สำรองข้อมูล
เคล็ดลับ: เปิด System Settings ที่หน้าจอ Proxies แล้วรันคำสั่ง networksetup ใดก็ได้ใน Terminal ข้างๆ คุณจะเห็นสวิตช์เปลี่ยนแบบเรียลไทม์ นี่คือวิธีที่ดีที่สุดในการยืนยันว่า Terminal และ GUI จัดการข้อมูลเดียวกัน
ปัญหาที่อาจเจอ
- ข้อผิดพลาด: Wi-Fi is not a recognized network service บริการชื่ออื่น รัน networksetup -listallnetworkservices แล้วคัดลอกชื่อที่แม่นยำ
- คำสั่งผ่าน แต่ในตั้งค่าไม่เปลี่ยน ปิดและเปิดหน้าต่าง System Settings ใหม่ มันไม่อัปเดตทันทีเสมอ
- ขอรหัสผ่านแล้วขึ้น Sorry, try again ต้องใส่รหัสผ่านผู้ใช้ Mac ไม่ใช่รหัสผ่านพร็อกซี่ อักขระไม่แสดง พิมพ์แล้วกด Enter ได้เลย
การตรวจสอบ: รัน networksetup -setwebproxystate Wi-Fi off, รีเฟรชบริการเช็ค IP ในเบราว์เซอร์ จะเห็น IP บ้าน รันคำสั่งเดิมกับ on, รีเฟรชหน้า จะเห็น IP พร็อกซี่ ถ้าสลับได้ทั้งสองทาง ผ่านขั้นนี้
ขั้นตอนที่ 5: ตั้งค่าพร็อกซี่สำหรับ curl, git, Homebrew, pip และ npm
เป้าหมายของขั้นนี้: ทำให้เครื่องมือบรรทัดคำสั่งทำงานผ่านพร็อกซี่ ตรงนี้แหละที่ทราฟฟิครั่วไหลมากที่สุด เพราะโปรแกรมเหล่านี้ไม่มองการตั้งค่าระบบ
ทำไมพร็อกซี่ระบบถึงไม่ทำงานตรงนี้
ยูทิลิตี้อย่าง curl, wget, git, pip, npm, brew เขียนมาให้ทำงานบน Unix ทุกระบบ พวกมันไม่รู้จัก macOS และ System Settings แทนที่นั้น พวกมันอ่านตัวแปรสภาพแวดล้อมชื่อ http_proxy, https_proxy, all_proxy และ no_proxy ถ้าไม่มีตัวแปร ทราฟฟิคก็วิ่งตรง สวิตช์ในตั้งค่าจะเป็นสีน้ำเงินนานแค่ไหนก็ได้
เปิดชั่วคราวในหน้าต่าง Terminal ปัจจุบัน
พิมพ์สามคำสั่งตามลำดับ:
export http_proxy=http://user123:pass456@proxy.example.net:10000export https_proxy=http://user123:pass456@proxy.example.net:10000export no_proxy=localhost,127.0.0.1,*.localคำสั่งแรกส่งทราฟฟิค HTTP ไปพร็อกซี่ คำสั่งที่สองส่งทราฟฟิค HTTPS ไปที่นั่น สังเกตว่าในค่า https_proxy โปรโตคอลยังเป็น http เพราะเป็นโปรโตคอลสื่อสารกับพร็อกซี่ ไม่ใช่กับเว็บ คำสั่งที่สามตั้งข้อยกเว้นสำหรับ Terminal นี่คือรายการแยกที่เราพูดถึงในขั้นตอนที่ 3
บางโปรแกรมอ่านตัวแปรเฉพาะตัวพิมพ์ใหญ่ เพื่อไม่ต้องเดา ให้ตั้งทั้งคู่:
export HTTP_PROXY=$http_proxy HTTPS_PROXY=$https_proxy NO_PROXY=$no_proxyตอนนี้ทดสอบโดยไม่ใช้คีย์ -x:
curl https://ifconfig.meถ้าได้ IP พร็อกซี่ ตัวแปรทำงานแล้ว ทุกโปรแกรมที่รันจากหน้าต่าง Terminal นี้จะวิ่งผ่านพร็อกซี่มือถือ ปิดหน้าต่าง ตัวแปรก็หาย
เปิดถาวรผ่านไฟล์ตั้งค่าเชลล์
บน macOS สมัยใหม่ เชลล์เริ่มต้นคือ zsh และการตั้งค่าเก็บในไฟล์ .zshrc ในโฟลเดอร์บ้าน ทุกอย่างที่เขียนไว้จะรันตอนเปิดหน้าต่าง Terminal ใหม่ทุกครั้ง
- เปิดไฟล์ในตัวแก้ไข nano ด้วยคำสั่ง:
nano ~/.zshrc- ใช้ลูกศรเลื่อนลงท้ายไฟล์
- วางบรรทัด export จากหัวข้อก่อนหน้า
- กด Control และ O แล้ว Enter เพื่อบันทึก กด Control และ X เพื่อออก
- ใช้การเปลี่ยนแปลงโดยไม่ต้องรีสตาร์ท:
source ~/.zshrcข้อควรระวัง: ใน .zshrc รหัสผ่านเก็บเป็นข้อความธรรมดา ถ้า Mac ใช้ร่วมกันหรือคุณเก็บไฟล์ในคลาวด์ซิงค์ ให้คิดดีๆ ทางเลือกประนีประนอมอยู่ในบล็อกตั้งค่าขั้นสูง: alias ที่เปิดพร็อกซี่ด้วยคำสั่งสั้นๆ ไม่ใช่อัตโนมัติ
Git
Git อ่านตัวแปรสภาพแวดล้อมได้ แต่ตั้งค่าในการตั้งค่าของมันเองนั้นแน่นอนกว่า:
git config --global http.proxy http://user123:pass456@proxy.example.net:10000ปิด:
git config --global --unset http.proxyการตั้งค่านี้มีผลกับการดำเนินการ clone, pull, push ผ่าน HTTPS สำหรับการเข้าถึงที่เก็บผ่าน SSH ต้องใช้วิธีอื่น ซึ่งอยู่ในบล็อกขั้นสูง
Homebrew
Brew พึ่งพาตัวแปรสภาพแวดล้อมทั้งหมด ถ้าคุณตั้งไว้ใน .zshrc ก็ไม่ต้องทำอะไรเพิ่ม ตรวจสอบด้วยคำสั่ง brew update: การอัปเดตควรผ่านโดยไม่มีข้อผิดพลาดการเชื่อมต่อ
pip
ตัวติดตั้ง Python ก็อ่านตัวแปรสภาพแวดล้อมเช่นกัน สำหรับการรันครั้งเดียวผ่านพร็อกซี่โดยไม่ใช้ตัวแปร ให้ใช้คีย์:
pip install --proxy http://user123:pass456@proxy.example.net:10000 requestsnpm
ตัวจัดการแพ็กเกจ Node.js เก็บการตั้งค่าแยก:
npm config set proxy http://user123:pass456@proxy.example.net:10000npm config set https-proxy http://user123:pass456@proxy.example.net:10000ปิด: npm config delete proxy และ npm config delete https-proxy
SOCKS5 สำหรับ Terminal
ถ้าต้องการส่งทราฟฟิค Terminal ผ่านพอร์ต SOCKS5 ให้ตั้งตัวแปรเดียวแทน http_proxy และ https_proxy:
export all_proxy=socks5h://user123:pass456@proxy.example.net:10001Curl และยูทิลิตี้หลายตัวเข้าใจมัน แต่ไม่ทั้งหมด: git ผ่าน HTTPS ไม่ได้อ่านตัวแปร all_proxy เสมอ และ pip ไม่เข้าใจ SOCKS โดยไม่ติดตั้งแพ็กเกจเพิ่ม สำหรับความอเนกประสงค์ สำหรับผู้เริ่มต้นเราแนะนำแบบ HTTP
เคล็ดลับ: เพิ่มบรรทัด alias myip='curl -s https://ifconfig.me; echo' ใน .zshrc แล้วพิมพ์ myip เพื่อดู IP Terminal ปัจจุบันในหนึ่งวินาที ช่วยประหยัดการตรวจสอบหลายสิบครั้งต่อวัน
การตรวจสอบ: เปิดหน้าต่าง Terminal ใหม่ รัน curl https://ifconfig.me และ git config --global --get http.proxy คำสั่งแรกคืน IP พร็อกซี่ คำสั่งที่สองแสดงที่อยู่พร็อกซี่ แปลว่าเครื่องมือตั้งค่าแล้วและการตั้งค่าอยู่รอดข้ามการรีสตาร์ท
ขั้นตอนที่ 6: หาทราฟฟิคที่วิ่งอ้อมพร็อกซี่และแก้ไข
เป้าหมายของขั้นนี้: ยืนยันว่าไม่มีแอปใดในชุดทำงานของคุณออกอินเทอร์เน็ตตรงๆ โดยที่คุณไม่รู้ ตรงนี้เราจะจัดระบบสาเหตุการรั่วทั้งหมดและตรวจสอบทีละข้อ
สาเหตุที่ 1: แอปที่มีการตั้งค่าพร็อกซี่ของตัวเอง
บางโปรแกรมไม่สนใจพร็อกซี่ระบบและตัวแปรสภาพแวดล้อม เพราะมีตั้งค่าของตัวเอง ตัวอย่างคลาสสิก: Telegram Desktop, Firefox, Discord, ไคลเอนต์อีเมลบางตัว, ไคลเอนต์ทอร์เรนต์, เบราว์เซอร์แอนตี้ดีเทค แต่ละตัวมีส่วน Network หรือ Proxy ในตั้งค่า
- ทำรายการแอปที่คุณใช้งาน
- เปิดแต่ละตัวและหาส่วนตั้งค่าเครือข่าย ถ้ามีตัวเลือก Use system proxy settings ให้เลือก ถ้ามีแค่กรอกมือ ให้ใส่โฮสต์ พอร์ต ล็อกอิน และรหัสผ่าน
- ตรวจสอบ IP ภายในแอปถ้ามันทำได้ หรือผ่านบริการเช็คที่เปิดในแอปนั้น
การตั้งค่าเบราว์เซอร์และแอนตี้ดีเทคในบล็อกมีแยกไว้ เราจะไม่พูดซ้ำตรงนี้ สิ่งสำคัญคือเข้าใจหลักการ: ต้องเช็คทุกแอปว่ามันดึงพร็อกซี่จากไหน
สาเหตุที่ 2: แอปถูกรันไม่ใช่จาก Terminal
ตัวแปรสภาพแวดล้อมใน .zshrc มีผลเฉพาะโปรแกรมที่รันจาก Terminal ถ้าคุณรันสคริปต์ด้วยการดับเบิลคลิก ผ่านตัวแก้ไขโค้ด หรือเครื่องมือจัดตาราง ตัวแปรจะไม่ถูกดึง วิธีแก้: ตั้งพร็อกซี่ในสคริปต์ตรงๆ หรือรันสคริปต์จาก Terminal หรือระบุตัวแปรในตั้งค่าตัวแก้ไขโค้ดของคุณ
สาเหตุที่ 3: บริการเครือข่ายผิด
คุณตั้งค่า Wi-Fi แต่ Mac เชื่อมต่อผ่านสาย เพราะคุณเสียบด็อก หรือกลับกัน วิธีเช็คง่าย: networksetup -listallnetworkservices แสดงทุกบริการ และหมวด Network ในตั้งค่าจะไฮไลต์อันที่ใช้งาน ตั้งค่าพร็อกซี่สำหรับทุกบริการที่คุณใช้ คำสั่ง networksetup ในขั้นตอนที่ 4 ต้องรันซ้ำ โดยเปลี่ยน Wi-Fi เป็น Ethernet
สาเหตุที่ 4: มาสก์เกินในรายการยกเว้น
เราพูดเรื่องนี้ในขั้นตอนที่ 3 รัน networksetup -getproxybypassdomains Wi-Fi และดูว่าไม่มีดาวเดี่ยว มาสก์อย่าง *.com, *.ru, *.net และโดเมนของบริการที่ทำงาน ตรวจสอบเช่นเดียวกันในตัวแปร no_proxy ด้วยคำสั่ง echo $no_proxy
สาเหตุที่ 5: IPv6
ถ้าผู้ให้บริการอินเทอร์เน็ตบ้านของคุณให้ที่อยู่ IPv6 แต่พร็อกซี่ทำงานบน IPv4 แอปบางตัวอาจพยายามออกผ่าน IPv6 ตรงๆ สำหรับแอประบบเป็นเรื่องหายาก แต่สำหรับยูทิลิตี้เกิดได้ ตรวจสอบว่าบริการเช็ค IP ไม่แสดงที่อยู่ยาวที่มีทวิภาค ถ้าแสดง ให้เปิดตั้งค่าบริการ แท็บ TCP/IP เปลี่ยน Configure IPv6 เป็น Link-local only
สาเหตุที่ 6: เปิด HTTPS แต่ไม่เปิด HTTP หรือกลับกัน
ในตั้งค่าระบบนี่คือสองสวิตช์อิสระ ลืมอันหนึ่ง ทราฟฟิคครึ่งหนึ่งก็รั่ว รัน scutil --proxy และดูว่า HTTPEnable กับ HTTPSEnable เท่ากับ 1 ทั้งคู่
สาเหตุที่ 7: แคชเบราว์เซอร์และการเชื่อมต่อที่เปิดอยู่
เบราว์เซอร์ที่เปิดอยู่ก่อนเปลี่ยนการตั้งค่าอาจถือการเชื่อมต่อเก่าไว้อีกสองสามนาที ปิดแอปให้สนิทด้วย Command และ Q ไม่ใช่กากบาท แล้วเปิดใหม่
เคล็ดลับ: ทำการตรวจสอบแบบครบวงจร เปิดบริการเช็ค IP ใน Safari, ใน Chrome, ผ่าน curl ใน Terminal และในทุกแอปทำงาน จดผลลัพธ์สี่อย่างไว้ข้างกัน ถ้าตรงกันทั้งหมดกับ IP พร็อกซี่มือถือ ก็ไม่มีการรั่ว ทำซ้ำทุกครั้งหลังเปลี่ยนพร็อกซี่หรืออัปเดตระบบ
การตรวจสอบ: จุดตรวจทั้งหมดในรายการข้างบนแสดง IP พร็อกซี่มือถือเดียวกัน ที่อยู่ท้องถิ่นเปิดตรง ไม่มีสวิตช์ไหนถูกทิ้งให้ปิดโดยบังเอิญ
ตรวจสอบผลลัพธ์: เช็คลิสต์สุดท้าย
ไล่ดูรายการและติ๊กทุกข้อ ถ้าข้อไหนไม่ผ่าน ให้กลับไปที่ขั้นตอนที่เกี่ยวข้อง
ระดับระบบ
- ใน System Settings ที่หน้าจอ Proxies เปิด Web Proxy (HTTP) และ Secure Web Proxy (HTTPS) ทั้งคู่ด้วยโฮสต์และพอร์ตเดียวกัน
- เปิดการยืนยันตัวตนแล้ว ล็อกอินและรหัสผ่านบันทึกแล้ว หน้าต่างขอรหัสผ่านไม่ปรากฏอีก
- Safari แสดง IP พร็อกซี่มือถือและเครือข่ายมือถือ
- รายการยกเว้นมี *.local, 169.254/16, localhost, 127.0.0.1 และซับเน็ตท้องถิ่นของคุณ ไม่มีมาสก์เกิน
- ที่อยู่ท้องถิ่นเปิดได้ไม่มีข้อผิดพลาด
Terminal
- คำสั่ง networksetup -getwebproxy Wi-Fi แสดง Enabled: Yes และเซิร์ฟเวอร์ถูกต้อง
- คำสั่งเปิดปิดผ่าน networksetup ทำงานได้ทั้งสองทาง
- ในหน้าต่าง Terminal ใหม่ echo $http_proxy แสดงที่อยู่พร็อกซี่
- curl https://ifconfig.me โดยไม่ใช้คีย์ -x คืน IP พร็อกซี่
- echo $no_proxy แสดงรายการยกเว้นท้องถิ่น
เครื่องมือ
- git config --global --get http.proxy คืนที่อยู่พร็อกซี่
- brew update เสร็จโดยไม่มีข้อผิดพลาดการเชื่อมต่อ
- npm config get proxy คืนที่อยู่พร็อกซี่ ถ้าคุณทำงานกับ Node.js
- ทุกแอปทำงานที่มีตั้งค่าเครือข่ายของตัวเองถูกเปลี่ยนมาใช้พร็อกซี่ระบบหรือตั้งค่าด้วยมือ
วิธีทดสอบแบบครบวงจร
- ปิดพร็อกซี่ระบบด้วยคำสั่ง networksetup -setwebproxystate Wi-Fi off และ networksetup -setsecurewebproxystate Wi-Fi off
- รีเฟรชบริการเช็ค IP ในเบราว์เซอร์ ควรปรากฏ IP บ้าน
- รัน curl https://ifconfig.me ใน Terminal ควรยังเป็น IP พร็อกซี่ เพราะ Terminal ใช้ตัวแปร ไม่ใช่การตั้งค่าระบบ นี่ยืนยันว่าระดับต่างๆ เป็นอิสระต่อกัน
- เปิดพร็อกซี่ระบบกลับ รีเฟรชเบราว์เซอร์ ควรกลับมาเป็น IP พร็อกซี่
- เปิดหน้าต่าง Terminal ใหม่ รัน unset http_proxy https_proxy แล้ว curl อีกครั้ง ตอนนี้ Terminal จะแสดง IP บ้าน ปิดหน้าต่าง: หน้าต่างถัดไปตัวแปรจะถูกดึงจาก .zshrc อีกครั้ง
ถ้าทุกการเปลี่ยนผ่านให้ผลตามคาด คุณควบคุมพร็อกซี่บน macOS ได้ครบทุกระดับแล้ว นี่คือเป้าหมาย
ข้อผิดพลาดทั่วไปและวิธีแก้
พร็อกซี่เปิดอยู่ แต่ IP ไม่เปลี่ยน
สาเหตุ: ตั้งค่าผิดอินเทอร์เฟซ หรือเปิดแค่สวิตช์ HTTP หรือ HTTPS อันเดียว หรือเบราว์เซอร์ยังไม่ได้รีสตาร์ท
วิธีแก้: ตรวจสอบบริการที่ใช้งานในหมวด Network รัน scutil --proxy และตรวจว่า Enable ทั้งคู่เป็น 1 ปิดเบราว์เซอร์ให้สนิทด้วย Command และ Q
หน้าต่างขอรหัสผ่านพร็อกซี่เด้งตลอด
สาเหตุ: ล็อกอินหรือรหัสผ่านผิด มีช่องว่างเกินหลังวาง หรือใน Keychain มีข้อมูลเก่าจากพร็อกซี่ก่อนหน้า
วิธีแก้: ลบเนื้อหาในช่องและพิมพ์ใหม่ด้วยมือ เปิดแอป Keychain หาบันทึกที่มีโฮสต์พร็อกซี่และลบ แล้วใส่ข้อมูลอีกครั้งและติ๊ก Remember
บางเว็บเปิดผ่านพร็อกซี่ บางเว็บเปิดตรง
สาเหตุ: เปิดแค่ HTTP หรือ HTTPS อันเดียว หรือมีมาสก์กว้างปรากฏในรายการยกเว้น
วิธีแก้: เปิดสวิตช์ทั้งสอง ตรวจรายการยกเว้นด้วย networksetup -getproxybypassdomains และลบทุกอย่างที่ไม่เกี่ยวกับเครือข่ายท้องถิ่น
Terminal ไม่สนใจพร็อกซี่ ทั้งที่ระบบตั้งค่าแล้ว
สาเหตุ: ยูทิลิตี้บรรทัดคำสั่งไม่อ่านการตั้งค่าระบบ ตัวแปรสภาพแวดล้อมไม่ได้ตั้งหรือตั้งในหน้าต่างอื่น
วิธีแก้: เขียนบรรทัด export ใน .zshrc และรัน source ~/.zshrc ตรวจสอบด้วย echo $http_proxy
ข้อผิดพลาด 407 Proxy Authentication Required
สาเหตุ: พร็อกซี่ไม่รับล็อกอินและรหัสผ่าน มักเป็นเรื่องอักขระพิเศษของรหัสผ่านในสตริง URL
วิธีแก้: เข้ารหัสอักขระพิเศษ: @ เป็น %40, ทวิภาคเป็น %3A, แฮชเป็น %23 ตรวจสอบว่าในหน้าผู้ให้บริการไม่ได้เปิดใช้การยืนยันตัวตนด้วย IP
บริการท้องถิ่น เครื่องพิมพ์ หรือเราเตอร์หยุดทำงาน
สาเหตุ: ลบ *.local และ 169.254/16 ออกจากรายการยกเว้น หรือไม่ได้เพิ่ม localhost และซับเน็ตท้องถิ่น
วิธีแก้: กู้คืนรายการด้วยคำสั่ง networksetup -setproxybypassdomains พร้อมชุดบันทึกเต็มจากขั้นตอนที่ 3
หลังรีสตาร์ท Mac พร็อกซี่ใน Terminal หายไป
สาเหตุ: ตัวแปรถูกตั้งผ่าน export แค่ในหน้าต่างที่เปิดอยู่ ไม่ได้อยู่ใน .zshrc
วิธีแก้: เปิด nano ~/.zshrc เพิ่มบรรทัดและบันทึก ถ้าใช้เชลล์อื่น เช่น bash ไฟล์จะชื่อ .bash_profile
ทุกอย่างทำงานได้ แต่หลังอัปเดต macOS ก็พัง
สาเหตุ: การอัปเดตระบบครั้งใหญ่อาจรีเซ็ตการตั้งค่าบริการเครือข่ายหรือเปลี่ยนชื่อ
วิธีแก้: เปิดไฟล์ proxy_backup.txt บน Desktop เทียบค่าและทำขั้นตอนที่ 4 ซ้ำด้วยคำสั่ง networksetup ตรวจสอบรายการบริการ: อาจมีอันใหม่ปรากฏ
โหลดหน้าเว็บช้า
สาเหตุ: นี่เป็นพฤติกรรมปกติของพร็อกซี่มือถือ เครือข่ายมือถือช้ากว่าอินเทอร์เน็ตบ้าน แต่บางครั้งสาเหตุคือเปิดทั้งพร็อกซี่ HTTP และ SOCKS พร้อมกัน และแอปพยายามสร้างการเชื่อมต่อสองครั้ง
วิธีแก้: ปิด SOCKS ของระบบ เหลือแค่ HTTP และ HTTPS ถ้าความเร็วยังต่ำ ลองเปลี่ยน IP ผ่านลิงก์หมุน
ความสามารถเพิ่มเติมสำหรับผู้ใช้ระดับสูง
การตั้งค่าพื้นฐานเสร็จแล้ว ต่อไปนี้คือเทคนิคบางอย่างที่เปลี่ยนงานมือให้เป็นระบบที่สะดวก
ตำแหน่งเครือข่าย: สองโปรไฟล์ สลับครั้งเดียว
macOS ให้สร้างชุดการตั้งค่าเครือข่ายหลายชุดและสลับทั้งหมดได้ สะดวกกว่าการเลื่อนสวิตช์ทุกครั้ง
- เปิด System Settings หมวด Network
- คลิกปุ่มจุดสามจุดด้านล่างรายการบริการและเลือก Locations แล้ว Edit Locations
- คลิกเครื่องหมายบวก ตั้งชื่อตำแหน่งใหม่ว่า Proxy คลิก Done
- เลือกตำแหน่งที่สร้างในรายการ ตั้งค่าพร็อกซี่สำหรับ Wi-Fi และ Ethernet เหมือนขั้นตอนที่ 2
- ปล่อยตำแหน่งเริ่มต้น Automatic ไว้โดยไม่มีพร็อกซี่
ตอนนี้สลับได้ผ่านเมนู Apple หัวข้อ Location หรือคำสั่งใน Terminal:
networksetup -switchtolocation Проксиและกลับ: networksetup -switchtolocation Автоматически ทุกบริการสลับพร้อมกัน จะไม่มีข้อผิดพลาดเรื่องอินเทอร์เฟซผิด
Alias สำหรับเปิดปิดเร็วใน Terminal
ถ้าไม่อยากเก็บพร็อกซี่เปิดไว้ตลอด ให้เพิ่มสองฟังก์ชันใน .zshrc แทนการ export ตรงๆ:
proxyon() { export http_proxy=http://user123:pass456@proxy.example.net:10000; export https_proxy=$http_proxy; export no_proxy=localhost,127.0.0.1,*.local; echo Proxy ON; }proxyoff() { unset http_proxy https_proxy all_proxy no_proxy HTTP_PROXY HTTPS_PROXY; echo Proxy OFF; }หลัง source ~/.zshrc คำสั่ง proxyon เปิดพร็อกซี่ในหน้าต่างปัจจุบัน proxyoff ปิด รหัสผ่านยังอยู่ในไฟล์ แต่พร็อกซี่จะไม่เปิดใช้โดยไม่มีการตัดสินใจของคุณ
คำสั่งเดียวสำหรับระบบและ Terminal
ขยายฟังก์ชัน proxyon โดยเพิ่มบรรทัด networksetup -setwebproxystate Wi-Fi on และ networksetup -setsecurewebproxystate Wi-Fi on ข้างใน จากนั้นคำสั่งเดียวจะเปิดพร็อกซี่ทั้งสำหรับเบราว์เซอร์และ Terminal ใน proxyoff เพิ่มคำสั่งเดิมกับ off ระบบจะขอรหัสผ่านผู้ดูแลครั้งเดียวต่อเซสชัน
เปลี่ยน IP พร็อกซี่มือถือจาก Terminal
ผู้ให้บริการพร็อกซี่มือถือส่วนใหญ่มีลิงก์สำหรับเปลี่ยน IP ดึงผ่าน curl ได้โดยไม่ต้องเปิดเบราว์เซอร์:
curl -s "https://адрес-ротации-из-личного-кабинета"ห่อเป็นฟังก์ชัน newip และเพิ่มใน .zshrc การรวม newip แล้ว myip จะแสดงที่อยู่ใหม่ในสองวินาที สำหรับนักไกล่เกลี่ยโฆษณาที่ตรวจสอบหลายสิบครั้งต่อวัน ช่วยประหยัดเวลาอย่างเห็นได้ชัด
SSH ผ่านพร็อกซี่ SOCKS5
ถ้าคุณเชื่อมต่อเซิร์ฟเวอร์ผ่าน SSH และต้องการให้การเชื่อมต่อวิ่งผ่านพร็อกซี่มือถือ ให้เพิ่มบล็อกนี้ในไฟล์ ~/.ssh/config:
Host myserver HostName 203.0.113.10 ProxyCommand nc -X 5 -x proxy.example.net:10001 %h %pยูทิลิตี้ nc มีมาใน macOS คีย์ -X 5 หมายถึง SOCKS5 คีย์ -x ระบุที่อยู่พร็อกซี่ การยืนยันตัวตนด้วยล็อกอินและรหัสผ่าน nc ไม่รองรับ ดังนั้นวิธีนี้เหมาะกับพร็อกซี่ที่ยืนยันด้วย IP
ไฟล์ PAC สำหรับกฎที่ยืดหยุ่น
สวิตช์ Automatic Proxy Configuration รับที่อยู่ไฟล์ PAC: สคริปต์ JavaScript ที่ตัดสินใจสำหรับแต่ละที่อยู่ว่าจะผ่านพร็อกซี่หรือตรง นี่คือวิธีสร้างข้อยกเว้นซับซ้อนที่ไม่สามารถแสดงด้วยมาสก์ได้ เก็บไฟล์ไว้ในเครื่องและระบุเป็น file:/