การค้นหาข้อมูล IP
สอบถามข้อมูลโดยละเอียดเกี่ยวกับที่อยู่ IP รวมถึงตำแหน่งทางภูมิศาสตร์ ผู้ให้บริการอินเทอร์เน็ต ASN และอื่น ๆ
ความเป็นส่วนตัวและความปลอดภัย
เมื่อใช้เครื่องมือนี้ในการค้นหาข้อมูล IP โปรดทราบข้อต่อไปนี้:
- ℹ️ คำขอค้นหาจะถูกส่งไปยัง API ของบุคคลที่สาม เราไม่บันทึกประวัติการค้นหาของคุณ
- ℹ️ ข้อมูลภูมิศาสตร์ของ IP โดยทั่วไปมีความแม่นยำเพียงระดับเมืองเท่านั้น และไม่สามารถระบุที่อยู่ที่แน่นอนได้
- ℹ️ การเชื่อมต่อบรอดแบนด์บ้านส่วนใหญ่ใช้ IP แบบไดนามิก ดังนั้นที่อยู่ IP ของคุณอาจเปลี่ยนเป็นระยะๆ
- ℹ️ หากคุณใช้ VPN หรือพร็อกซี ผลลัพธ์จะแสดงข้อมูลเกี่ยวกับเซิร์ฟเวอร์พร็อกซี
กรณีการใช้งาน
การตรวจสอบด้านความปลอดภัย
วิเคราะห์บันทึกการเข้าถึงเพื่อค้นหาแหล่ง IP ที่น่าสงสัย เพื่อระบุภัยคุกคามด้านความปลอดภัยที่อาจเกิดขึ้น
การดีบักเครือข่าย
แก้ไขปัญหาการเชื่อมต่อ และตรวจสอบตำแหน่งทางภูมิศาสตร์ของเซิร์ฟเวอร์หรือโหนด CDN ของคุณ
การระบุตำแหน่งทางภูมิศาสตร์
ส่งมอบเนื้อหา ภาษา หรือบริการท้องถิ่น (เช่น การกระจาย CDN) โดยอ้างอิงจากที่อยู่ IP ของผู้ใช้
คำถามที่พบบ่อย
ตำแหน่งทางภูมิศาสตร์ของ IP มีความแม่นยำเพียงใด?
การระบุตำแหน่งทางภูมิศาสตร์ด้วย IP มักมีความแม่นยำในระดับเมือง โดยอาจมีความคลาดเคลื่อนตั้งแต่หลายสิบกิโลเมตรจนถึงหลายร้อยกิโลเมตร และไม่สามารถระบุที่อยู่ถนนหรือหมายเลขอาคารได้อย่างแม่นยำ
ทำไมที่อยู่ IP ของฉันถึงเปลี่ยนไป?
การเชื่อมต่อบรอดแบนด์สำหรับบ้านส่วนใหญ่ใช้การจัดสรร IP แบบไดนามิก (DHCP) ดังนั้นผู้ให้บริการอินเทอร์เน็ต (ISP) จะมอบ IP ใหม่ให้เป็นระยะ ส่วนธุรกิจหรือเซิร์ฟเวอร์มักใช้ IP แบบคงที่
ฉันจะซ่อนที่อยู่ IP จริงของฉันได้อย่างไร?
คุณสามารถใช้ VPN โปรซีเซิร์ฟเวอร์ หรือเครือข่าย Tor เพื่อซ่อน IP จริงของคุณ อย่างไรก็ตาม โปรดทราบว่าบริการเหล่านี้อาจทำให้การเชื่อมต่อช้าลงหรือปิดกั้นการเข้าถึงเว็บไซต์บางแห่ง
ทำไมฉันถึงมีที่อยู่ IP สองตัว?
คุณอาจมีที่อยู่ IP ทั้ง IPv4 และ IPv6 เนื่องจากเครือข่ายสมัยใหม่กำลังเปลี่ยนจาก IPv4 เป็น IPv6 และอุปกรณ์หลายรุ่นรองรับทั้งสองโปรโตคอลพร้อมกัน
IPv4 ปะทะ IPv6: ทำไมเราต้องใช้ IPv6?
IPv4 (ปี 1981)
รูปแบบ: ตัวเลขทศนิยมสี่ตัว คั่นด้วยจุด (ตัวอย่าง: 192.168.1.1)
จำนวนทั้งหมด: ที่อยู่ประมาณ 4.3 พันล้านแห่ง (2³² = 4,294,967,296)
ปัญหา: ที่อยู่เกือบหมดแล้ว; มีการจัดสรรเต็มจำนวนในปี 2011
ความยาว: 32 บิต
IPv6 (ปี 1998)
รูปแบบ: กลุ่มตัวเลขฐานสิบหก 8 กลุ่ม (ตัวอย่าง: 2001:0db8::1)
จำนวนทั้งหมด: ที่อยู่ประมาณ 340 Undecillion แห่ง (2¹²⁸)
ข้อดี: พื้นที่ที่อยู่เกือบไม่จำกัด — เพียงพอสำหรับกำหนด IP ให้กับเม็ดทรายทุกเม็ดบนโลก
ความยาว: 128 บิต
ทำไม IPv4 ถึงไม่เพียงพอ?
- • ประชากรโลกมีถึง 8 พันล้านคน โดยอย่างน้อย 2–3 เครื่องต่อคน (โทรศัพท์, คอมพิวเตอร์, แท็บเล็ต)
- • การเติบโตอย่างรวดเร็วของอุปกรณ์ IoT (สมาร์ทโฮม, ยานยนต์, อุปกรณ์สวมใส่ได้)
- • องค์กรและศูนย์ข้อมูลต้องการที่อยู่ IP จำนวนมากมาย
- • การจัดสรรในช่วงแรกไม่มีประสิทธิภาพ (ตัวอย่าง: มหาวิทยาลัย MIT ได้รับ IP จำนวน 16 ล้านแห่ง)
ช่วงของที่อยู่ IP พิเศษ
ที่อยู่ Loopback
127.0.0.0/8 (127.0.0.1 – 127.255.255.255)
ใช้สำหรับการทดสอบภายในเครื่อง; ข้อมูลจะไม่ออกจากอุปกรณ์ โดยทั่วไป 127.0.0.1 แทน localhost
การใช้งาน: ทดสอบบริการภายในเครื่อง, การพัฒนาและดีบัก
ที่อยู่ส่วนตัว
- 10.0.0.0/8 (10.0.0.0 – 10.255.255.255) – Class A
- 172.16.0.0/12 (172.16.0.0 – 172.31.255.255) – Class B
- 192.168.0.0/16 (192.168.0.0 – 192.168.255.255) – Class C
ใช้ภายในเครือข่ายท้องถิ่น; ไม่สามารถเข้าถึงอินเทอร์์โดยตรงหากไม่มีการแปล NAT
การใช้งาน: เครือข่ายบ้าน อินทราเน็ตองค์กร
ที่อยู่ APIPA
169.254.0.0/16
ที่อยู่ชั่วคราวที่ระบบจัดสรรอัตโนมัติเมื่อเซิร์ฟเวอร์ DHCP ไม่สามารถใช้งานได้
การใช้งาน: การกำหนดค่าอัตโนมัติ (ระบุว่ากำหนดค่าเครือข่ายล้มเหลว)
ที่อยู่มัลติคาสต์
224.0.0.0/4 (224.0.0.0 – 239.255.255.255)
ใช้สำหรับการสื่อสารแบบหนึ่งต่อหลาย เช่น การสตรีมวิดีโอสดและ IPTV
ที่อยู่ที่สงวนไว้
- 0.0.0.0/8 – แสดงถึง "เครือข่ายนี้"
- 255.255.255.255 – ที่อยู่บรอดคาสต์
- 192.0.2.0/24 – สงวนไว้สำหรับตัวอย่างเอกสาร
- 198.18.0.0/15 – สงวนไว้สำหรับการทดสอบเกณฑ์มาตรฐาน
เซิร์ฟเวอร์ DNS สาธารณะยอดนิยม
Google DNS
8.8.8.8 / 8.8.4.4
2001:4860:4860::8888 / 2001:4860:4860::8844
เร็วและเชื่อถือได้ที่สุดทั่วโลก รองรับ DNSSEC
Cloudflare DNS
1.1.1.1 / 1.0.0.1
2606:4700:4700::1111 / 2606:4700:4700::1001
เน้นความเป็นส่วนตัว เร็วสุด และไม่มีการบันทึกข้อมูล
Quad9 DNS
9.9.9.9 / 149.112.112.112
การป้องกันด้านความปลอดภัย บล็อกเว็บไซต์อันตราย
OpenDNS
208.67.222.222 / 208.67.220.220
การควบคุมโดยผู้ปกครอง การกรองเนื้อหา
DNS ประจำภูมิภาคเอเชีย
- Alibaba Cloud DNS (จีน): 223.5.5.5 / 223.6.6.6
- DNSPod (จีน): 119.29.29.29
- 114 DNS (จีน): 114.114.114.114
ข้อเท็จจริงที่น่าสนใจเกี่ยวกับ IP
💰 บล็อกที่อยู่ IP ที่แพงที่สุด
ช่วง IP 1.0.0.0/8 เคยถูก APNIC ซื้อในราคาหลายล้านดอลลาร์เพื่อใช้ในการวิจัย อย่างไรก็ตาม 'IP พรีเมียม' บางตัว เช่น 8.8.8.8 และ 1.1.1.1 มีมูลค่ามหาศาล เพราะ Cloudflare ใช้เงินจำนวนมากเพื่อซื้อ 1.1.1.1 จากผู้ให้บริการโทรคมนาคม
📍 ทำไม IP เดียวกันถึงแสดงตำแหน่งต่างกัน?
- • ฐานข้อมูลระบุตำแหน่งทางภูมิศาสตร์ของ IP แต่ละแห่ง (แต่ละ API ใช้แหล่งข้อมูลที่แตกต่างกัน)
- • ที่อยู่ IP แบบไดนามิกมีการเปลี่ยนแปลง (ถูกจัดสรรใหม่โดยผู้ให้บริการอินเทอร์เน็ต)
- • เซิร์ฟเวอร์ VPN/พร็อกซี (แสดงตำแหน่งของเซิร์ฟเวอร์พร็อกซี)
- • โหนด CDN (แสดงตำแหน่งเซิร์ฟเวอร์ CDN ที่ใกล้ที่สุด)
- • เครือข่ายมือถือ (ตำแหน่งเสาสัญญาณเซลลูลาร์อาจไม่แม่นยำ)
📊 อัตราการนำ IPv6 มาใช้
ณ ปี 2024 อัตราการนำ IPv6 มาใช้ทั่วโลกอยู่ที่ประมาณ 40% โดยมีอินเดีย สหรัฐอเมริกา และเยอรมนีเป็นผู้นำ จีนมีอัตราการนำ IPv6 มาใช้ประมาณ 30% ขณะที่เบลเยียมมีอัตราการนำ IPv6 มาใช้สูงสุดในโลก เกิน 60%
🎂 ที่อยู่ IP แรก
วันที่ 1 มกราคม 1983 อินเทอร์เน็ตได้นำโปรโตคอล TCP/IP มาใช้อย่างเป็นทางการ ซึ่งถือเป็นการกำเนิดของที่อยู่ IP แรก Leonard Kleinrock จาก BBN Technologies ได้รับการยอมรับอย่างแพร่หลายว่าเป็นบุคคลแรกที่ใช้ที่อยู่ IP
🗑️ การจัดสรร IP ที่ไม่มีประสิทธิภาพ
การจัดสรร IP ในช่วงแรกของอินเทอร์เน็ตนั้นเอื้อเฟื้ออย่างยิ่ง MIT ซึ่งเป็นมหาวิทยาลัยเพียงแห่งเดียวได้รับ IP 16 ล้านตัว (ช่วง 18.0.0.0/8 ทั้งหมด) ส่วน Apple ได้รับ IP 16 ล้านตัว (17.0.0.0/8) ในขณะเดียวกัน แผ่นดินใหญ่ของจีนได้รับ IP เพียงประมาณ 330 ล้านตัว ซึ่งต้องให้บริการผู้ใช้อินเทอร์เน็ตเกือบหนึ่งพันล้านคน สมมติว่ามีอุปกรณ์สองเครื่องต่อคน จำเป็นต้องใช้ IP อย่างน้อย 2 พันล้านตัว ความไม่สมดุลนี้ทำให้จีนต้องพึ่งพาเทคโนโลยี NAT อย่างมากเพื่อแชร์ IP
🚫 บัญชีดำ IP
ทั่วโลกมีฐานข้อมูลบัญชีดำ IP หลายแห่ง เช่น Spamhaus ซึ่งใช้ระบุ IP ที่เกี่ยวข้องกับสแปม มัลแวร์ การโจมตี DDoS และกิจกรรมที่เป็นอันตรายอื่น ๆ เมื่อ IP ถูกขึ้นบัญชีดำ อาจส่งผลให้อีเมลถูกปฏิเสธหรือเว็บไซต์ถูกบล็อก
🤯 กรณีแปลก ๆ ของการระบุตำแหน่งทางภูมิศาสตร์ของ IP
ครอบครัวธรรมดาในแคนซัส สหรัฐอเมริกา ได้รับพิกัดเริ่มต้น (38°เหนือ 97°ตะวันตก ศูนย์กลางทางภูมิศาสตร์ของสหรัฐ) จากฐานข้อมูล IP ของ MaxMind ด้วยเหตุนี้ IP หลายล้านที่ไม่สามารถระบุตำแหน่งได้อย่างแม่นยำ จึงถูกแมปไปที่บ้านหลังนั้น ท้ายที่สุดครอบครัวนี้กลายเป็น "ศูนย์แฮ็กเกอร์ของอเมริกา" โดยไม่ตั้งใจ ได้รับสายและการเยี่ยมชมที่ล่วงละเมิดนับไม่ถ้วนจาก FBI ตำรวจ เจ้าหนี้ และเหยื่อการหลอกล่อ บางคนถึงกับบุกเข้ามาตอนกลางคืน ในปี 2016 ครอบครัวนี้ฟ้อง MaxMind และได้รับค่าชดเชยในที่สุด
💸 ที่อยู่ IPv4 สามารถซื้อและขายได้
เนื่องจากที่อยู่ IPv4 หมดลง จึงกลายเป็นสินค้าที่สามารถซื้อขายได้ บนตลาดมืด ราคาสูงถึง 40 ดอลลาร์ต่อที่อยู่ ในปี 2011 ไมโครซอฟต์ซื้อที่อยู่ IP จำนวน 666,000 แห่งจาก Nortel ที่ล้มละลาย ในราคา 7.5 ล้านดอลลาร์ ซึ่งเฉลี่ยประมาณ 11.25 ดอลลาร์ต่อที่อยู่ IP ในปี 2014 ยักษ์ใหญ่ด้านเทคโนโลยี เช่น อเมซอนและไมโครซอฟต์ ได้ซื้อที่อยู่ IPv4 จำนวนมากอย่างเร่งด่วน ทำให้ราคาสูงขึ้นแตะระดับสูงสุดเป็นประวัติการณ์
🤦 การคำนวณผิดของผู้ออกแบบ IPv4
ในปี 1981 ผู้ออกแบบ IPv4 เชื่อว่า "ที่อยู่ 4.3 พันล้านแห่งจะเพียงพอตลอดไป" พวกเขาไม่เคยคาดการณ์ถึงการเติบโตอย่างทวีคูณของอินเทอร์เน็ต: ปัจจุบันประชากรโลก 8 พันล้านคน แต่ละคนมีอุปกรณ์อย่างน้อย 2-3 เครื่อง บวกกับการเพิ่มขึ้นของอุปกรณ์ IoT หาก IPv4 ออกแบบด้วยระบบการระบุที่อยู่แบบ 64 บิตหรือ 128 บิต เราคงไม่ต้องเผชิญปัญหาการขาดแคลนที่อยู่ในปัจจุบัน
🏠 ความลับของ 127.0.0.1
127.0.0.1 (localhost) ไม่ใช่แค่ที่อยู่เดียว ช่วง 127.0.0.0/8 ทั้งหมด (ประมาณ 16 ล้านที่อยู่) ถูกสงวนไว้สำหรับ loopback คุณสามารถส่ง ping ไปที่ที่อยู่ใดก็ตามในช่วงนี้ เช่น 127.0.0.2 หรือ 127.1.2.3 และทั้งหมดจะชี้กลับไปยังเครื่องของคุณเอง
⏰ ไทม์ไลน์การขาดแคลนที่อยู่ IPv4
เมื่อวันที่ 3 กุมภาพันธ์ 2011 IANA ได้แบ่งจัดสรรบล็อกที่อยู่ IPv4 สุดท้าย เมื่อวันที่ 15 เมษายน 2011 APNIC (เอเชีย-แปซิฟิก) หมดลง ในเดือนกันยายน 2012 RIPE NCC (ยุโรป) ใช้ที่อยู่ทั้งหมดในกองสำรองแล้ว ในเดือนกันยายน 2015 ARIN (อเมริกาเหนือ) ใช้ที่อยู่ที่เหลือหมดแล้ว
📏 ที่อยู่ IP ที่ยาวที่สุด
ที่อยู่ IPv6 สามารถมีความยาวได้สูงสุดถึง 39 ตัวอักษร (แบ่งเป็น 8 กลุ่ม กลุ่มละ 4 หลักเลขฐานสิบหก บวกอีก 7 โคลอน) แต่ผ่านกฎการย่อที่อยู่ จะสามารถย่อได้สั้นกว่ามาก เช่น ::1 แทนที่อยู่ loopback ของ IPv6
🚀 ที่อยู่ IP ไม่มีส่วนเกี่ยวข้องกับความเร็วอินเทอร์เน็ต
หลายคนเข้าใจผิดว่าการเปลี่ยนที่อยู่ IP จะช่วยเพิ่มความเร็วอินเทอร์เน็ต ที่จริงแล้ว ที่อยู่ IP เป็นเพียง "ที่อยู่ถนน" บนเครือข่ายเท่านั้น ความเร็วขึ้นอยู่กับแบนด์วิดท์ การกำหนดเส้นทาง ประสิทธิภาพของเซิร์ฟเวอร์ และปัจจัยอื่น ไม่ใช่ที่อยู่ IP เอง
ลักษณะและข้อดี/ข้อเสียของ IPv6
ข้อดี
- ✓ พื้นที่ที่อยู่ขนาดใหญ่มาก: มีที่อยู่ถึง 2¹²⁸ แห่ง ซึ่งเกือบไม่มีขีดจำกัด
- ✓ การกำหนดเส้นทางที่ง่ายขึ้น: การกำหนดที่อยู่แบบแบ่งชั้นช่วยลดขนาดตารางการกำหนดเส้นทาง
- ✓ การกำหนดค่าอัตโนมัติ: รองรับ SLAAC โดยไม่ต้องใช้ DHCP
- ✓ ความปลอดภัยที่ดีขึ้น: รองรับ IPsec ในตัว
- ✓ คุณภาพการให้บริการ (QoS) ที่ดีขึ้น: ฟิลด์ label การไหลช่วยปรับปรุงแอปพลิเคชันแบบเรียลไทม์
- ✓ ไม่ต้องใช้ NAT: อุปกรณ์ทุกเครื่องมีที่อยู่สาธารณะของตัวเอง
- ✓ ความคล่องตัวที่ดีขึ้น: รองรับอุปกรณ์เคลื่อนที่ได้ดีขึ้น
ข้อเสีย
- ⚠ ปัญหาความเข้ากันได้: ต้องใช้อุปกรณ์และเครือข่ายที่รองรับ
- ⚠ เส้นทางการเรียนรู้: รูปแบบที่อยู่ซับซ้อนและจำยาก
- ⚠ ค่าใช้จ่ายในการเปลี่ยนผ่าน: ต้องอัปเกรดฮาร์ดแวร์และซอฟต์แวร์
- ⚠ การทำงานแบบ Dual-stack: ต้องรองรับทั้ง IPv4 และ IPv6 ในช่วงเปลี่ยนผ่าน
บริการข้อมูล IP ที่เกี่ยวข้อง
เครื่องมือนี้ใช้ API ด้านล่างเพื่อให้บริการ และเราขอแนะนำบริการค้นหา IP ที่ยอดเยี่ยมอื่น ๆ เหล่านี้ด้วย
IP-API.com
ใช้โดยเครื่องมือนี้ ⭐API หลักที่เครื่องมือนี้ใช้ ใช้งานได้ฟรีอย่างสมบูรณ์ (สำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์) รองรับการสืบค้นแบบกลุ่ม และให้ข้อมูลในรูปแบบ JSON/XML/CSV ขีดจำกัด: 45 คำขอต่อนาที
IPapi.co
ใช้โดยเครื่องมือนี้ ⭐API สำรองสำหรับเครื่องมือนี้ ให้ข้อมูลเพิ่มเติม เช่น สกุลเงิน ภาษา และประเภทการเชื่อมต่อ แผนฟรีอนุญาตให้ส่งคำขอได้ 30,000 ครั้งต่อเดือน
IPInfo.io
ข้อมูลที่แม่นยำ API ที่เป็นมิตรกับนักพัฒนาส่งข้อมูล IP โดยละเอียด รวมถึงข้อมูล ASN ข้อมูลทางภูมิศาสตร์ และข้อมูลบริษัท มีแผนบริการฟรี (Free Plan)
IPGeolocation.io
มีคุณสมบัติครบถ้วนให้ข้อมูลทางภูมิศาสตร์ของ IP เขตเวลา สกุลเงิน สภาพอากาศ และอื่น ๆ อีกมากมาย แผนฟรีอนุญาตให้ส่งคำขอได้ 30,000 ครั้งต่อเดือน
MaxMind GeoIP2
แม่นยำที่สุด ระดับองค์กรฐานข้อมูลข้อมูลทางภูมิศาสตร์ของ IP ที่เป็นมาตรฐานอุตสาหกรรม มีความแม่นยำสูง มีทั้งฐานข้อมูลออฟไลน์และ API ออนไลน์
IPStack
การตรวจจับความปลอดภัยรองรับ IPv4 และ IPv6 พร้อมโมดูลความปลอดภัยสำหรับตรวจจับพร็อกซี VPN และ Tor แผนฟรีอนุญาตให้ส่งคำขอได้ 100 ครั้งต่อเดือน
IPData.co
ข่าวกรองภัยคุกคามให้ข้อมูลข่าวกรองภัยคุกคาม ข้อมูล ASN และข้อมูลบริษัท แผนฟรีอนุญาตให้ใช้งานได้ 1,500 ครั้งต่อวัน
Abstract API
เรียบง่ายและใช้งานง่ายAPI ตำแหน่งทางภูมิศาสตร์ของ IP ที่เรียบง่ายและใช้งานง่าย แผนฟรีอนุญาตให้ใช้งานได้ 1,000 ครั้งต่อเดือน โดยมีข้อจำกัด 1 ครั้งต่อวินาที
IPRegistry
รับคำขอฟรี 100,000 ครั้งเมื่อลงทะเบียนให้บริการตำแหน่งทางภูมิศาสตร์ของ IP ข้อมูลบริษัท การตรวจจับภัยคุกคาม และการแก้ไขปัญหาของพร็อกซี ลงทะเบียนเพื่อรับคำขอฟรี 100,000 ครั้ง
DB-IP
ฐานข้อมูลโอเพ่นซอร์สให้บริการฐานข้อมูลตำแหน่งทางภูมิศาสตร์ของ IP ที่ดาวน์โหลดได้ฟรี พร้อมทั้งบริการค้นหาทางออนไลน์
IPify
รับ IP สาธารณะของคุณเชี่ยวชาญในการดึงที่อยู่ IP สาธารณะของคุณ - เรียบง่าย รวดเร็ว และฟรีอย่างสมบูรณ์
วิธีการดึงที่อยู่ IP ด้วยโปรแกรม?
ด้านล่างนี้คือโค้ดตัวอย่างสำหรับการดึงที่อยู่ IP ของผู้เยี่ยมชมในภาษาโปรแกรมต่างๆ:
Java (Spring Boot)
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@RestController
public class IpController {
@GetMapping('/ip')
public String getClientIp(HttpServletRequest request) {
String ip = request.getHeader("CF-Connecting-IP");
if (ip == null || ip.isEmpty()) {
ip = request.getHeader("X-Forwarded-For");
if (ip != null) {
ip = ip.split(",")[0];
}
}
if (ip == null || ip.isEmpty()) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.isEmpty()) {
ip = request.getRemoteAddr();
}
return ip;
}
}
PHP
function getClientIp() {
$ipKeys = [
'HTTP_CF_CONNECTING_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_REAL_IP',
'REMOTE_ADDR'
];
foreach ($ipKeys as $key) {
if (!empty($_SERVER[$key])) {
$ips = explode(',', $_SERVER[$key]);
return trim($ips[0]);
}
}
return $_SERVER['REMOTE_ADDR'] ?? 'Unknown';
}
$ip = getClientIp();
echo "Your IP: " . $ip;
JavaScript (Node.js)
const express = require('express');
const app = express();
app.get('/ip', (req, res) => {
const ip = req.headers['cf-connecting-ip'] ||
req.headers['x-forwarded-for']?.split(',')[0] ||
req.headers['x-real-ip'] ||
req.socket.remoteAddress;
res.json({ ip: ip });
});
app.listen(3000);
Python (Flask)
from flask import Flask, request
app = Flask(__name__)
@app.route('/ip')
def get_ip():
ip = request.headers.get('CF-Connecting-IP') or \
request.headers.get('X-Forwarded-For', '').split(',')[0] or \
request.headers.get('X-Real-IP') or \
request.remote_addr
return {'ip': ip}
if __name__ == '__main__':
app.run()
Rust
use actix_web::{web, App, HttpRequest, HttpServer, Responder};
fn get_client_ip(req: &HttpRequest) -> String {
if let Some(ip) = req.headers().get("CF-Connecting-IP") {
return ip.to_str().unwrap_or("").to_string();
}
if let Some(forwarded) = req.headers().get("X-Forwarded-For") {
if let Ok(forwarded_str) = forwarded.to_str() {
if let Some(first_ip) = forwarded_str.split(',').next() {
return first_ip.trim().to_string();
}
}
}
if let Some(ip) = req.headers().get("X-Real-IP") {
return ip.to_str().unwrap_or("").to_string();
}
req.peer_addr()
.map(|addr| addr.ip().to_string())
.unwrap_or_else(|| "Unknown".to_string())
}
async fn ip_handler(req: HttpRequest) -> impl Responder {
let ip = get_client_ip(&req);
format!("Your IP: {}", ip)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new().route("/ip", web::get().to(ip_handler))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
Go
package main
import (
"net/http"
"strings"
)
func getClientIP(r *http.Request) string {
if ip := r.Header.Get("CF-Connecting-IP"); ip != "" {
return ip
}
if forwarded := r.Header.Get("X-Forwarded-For"); forwarded != "" {
ips := strings.Split(forwarded, ",")
return strings.TrimSpace(ips[0])
}
if ip := r.Header.Get("X-Real-IP"); ip != "" {
return ip
}
return r.RemoteAddr
}
func handler(w http.ResponseWriter, r *http.Request) {
ip := getClientIP(r)
w.Write([]byte("Your IP: " + ip))
}
func main() {
http.HandleFunc("/ip", handler)
http.ListenAndServe(":8080", nil)
}
注意事项:
- • หมายเหตุ: หากเว็บไซต์ของคุณใช้ CDN (เช่น Cloudflare) หรือ reverse proxy (เช่น Nginx) คุณต้องดึง IP จริงจาก header HTTP เฉพาะ
- • ลำดับความสำคัญ: CF-Connecting-IP > X-Forwarded-For > X-Real-IP > RemoteAddr
- • X-Forwarded-For อาจมี IP หลายตัว (คั่นด้วยเครื่องหมายจุลภาค) ตัวแรกคือ IP จริงของไคลเอ็นต์
- • JavaScript ฝั่งเบราว์เซอร์ไม่สามารถรับที่อยู่ IP ได้โดยตรง - ต้องเรียก API ของบุคคลที่สาม