ตรวจสอบข้อมูล IP
ค้นหาข้อมูลรายละเอียดของที่อยู่ IP เช่น ตำแหน่งทางภูมิศาสตร์, ISP, ASN ฯลฯ
ความเป็นส่วนตัวและความปลอดภัย
เมื่อใช้เครื่องมือนี้เพื่อค้นหาข้อมูล IP โปรดสังเกตข้อควรรู้ต่อไปนี้:
- ℹ️ คำขอค้นหาจะถูกส่งไปยัง API ของบุคคลที่สาม เราไม่บันทึกประวัติการค้นหาของคุณ
- ℹ️ ข้อมูลตำแหน่งทางภูมิศาสตร์ของ IP มักแม่นยำถึงระดับเมืองเท่านั้น ไม่สามารถระบุที่อยู่เฉพาะเจาะจงได้
- ℹ️ อินเทอร์เน็ตสาย broadband ของบ้านส่วนใหญ่ใช้ที่อยู่ IP แบบไดนามิก ที่อยู่ของคุณอาจเปลี่ยนแปลงเป็นระยะๆ
- ℹ️ หากคุณใช้ VPN หรือโปรกซี ผลลัพธ์ที่แสดงจะเป็นข้อมูลของเซิร์ฟเวอร์โปรกซี
สถานการณ์การใช้งาน
การตรวจสอบความปลอดภัย
ตรวจสอบแหล่งที่มาของที่อยู่ IP ในล็อกการเข้าถึง เพื่อระบุภัยคุกคามที่อาจเกิดขึ้น
การดีบักเครือข่าย
แก้ไขปัญหาการเชื่อมต่อเครือข่าย โดยยืนยันตำแหน่งทางภูมิศาสตร์ของเซิร์ฟเวอร์หรือโหนด CDN
การระบุตำแหน่งทางภูมิศาสตร์
ให้เนื้อหา ภาษา หรือบริการที่ปรับตามภูมิภาคของผู้ใช้ตามที่อยู่ IP (เช่น การจัดส่งผ่าน CDN)
คำถามที่พบบ่อย
การระบุตำแหน่งจากที่อยู่ IP แม่นยำแค่ไหน?
ตำแหน่งทางภูมิศาสตร์ของ IP มักแม่นยำถึงระดับเมือง โดยมีข้อผิดพลาดประมาณหลายสิบถึงหลายร้อยกิโลเมตร ไม่สามารถระบุที่อยู่เฉพาะเจาะจง เช่น ถนนหรือเลขที่บ้านได้
ทำไมที่อยู่ IP ของฉันถึงเปลี่ยนไป?
อินเทอร์เน็ตสาย宽带 ส่วนใหญ่ใช้การจัดสรร IP แบบไดนามิก (DHCP) ผู้ให้บริการจะเปลี่ยนที่อยู่ IP ของคุณเป็นระยะๆ ส่วนองค์กรหรือเซิร์ฟเวอร์มักใช้ IP คงที่ (static IP)
วิธีซ่อนที่อยู่ IP จริงของฉันคืออะไร?
คุณสามารถใช้ VPN, ตัวแทนโปรกซี หรือเครือข่าย Tor เพื่อซ่อนที่อยู่ IP จริง แต่โปรดทราบว่าบริการเหล่านี้อาจทำให้ความเร็วอินเทอร์เน็ตช้าลงและเข้าถึงเว็บไซต์บางแห่งไม่ได้
ทำไมฉันถึงมีที่อยู่ IP สองอัน?
คุณอาจมีทั้งที่อยู่ IPv4 และ IPv6 อยู่พร้อมกัน ปัจจุบันเครือข่ายกำลังเปลี่ยนผ่านจาก IPv4 ไปสู่ IPv6 และอุปกรณ์ส่วนใหญ่รองรับทั้งสองโปรโตคอล
IPv4 vs IPv6: ทำไมต้องใช้ IPv6?
IPv4 (ค.ศ. 1981)
รูปแบบ: 4 ชุดตัวเลขฐานสิบ (เช่น 192.168.1.1)
จำนวนทั้งหมด: ประมาณ 4.3 พันล้านที่อยู่ (2³² = 4,294,967,296)
ปัญหา: ที่อยู่ใกล้หมดแล้ว และถูกจัดสรรหมดตั้งแต่ปี 2011
ความยาว: 32 บิต
IPv6 (ค.ศ. 1998)
รูปแบบ: 8 ชุดเลขฐานสิบหก (เช่น 2001:0db8::1)
จำนวนทั้งหมด: ประมาณ 340 ล้านล้านล้านล้านที่อยู่ (2¹²⁸)
ข้อได้เปรียบ: จำนวนที่อยู่เกือบไม่สิ้นสุด พอที่จะจัดสรรให้กับเม็ดทรายทุกเม็ดบนโลก
ความยาว: 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
การใช้งาน: ทดสอบบริการในเครื่อง, การดีบักในการพัฒนา
ที่อยู่ส่วนตัว (Private)
- 10.0.0.0/8 (10.0.0.0 - 10.255.255.255) - คลาส A
- 172.16.0.0/12 (172.16.0.0 - 172.31.255.255) - คลาส B
- 192.168.0.0/16 (192.168.0.0 - 192.168.255.255) - คลาส C
ใช้ภายในเครือข่ายท้องถิ่น ไม่สามารถเข้าถึงอินเทอร์เน็ตโดยตรง ต้องใช้ NAT เพื่อแปลงที่อยู่
การใช้งาน: เครือข่ายบ้าน, เครือข่ายองค์กร
ที่อยู่ APIPA
169.254.0.0/16
ที่อยู่ชั่วคราวที่ระบบกำหนดอัตโนมัติเมื่อเซิร์ฟเวอร์ DHCP ไม่สามารถใช้งานได้
การใช้งาน: การตั้งค่าอัตโนมัติ (บ่งชี้ว่าการตั้งค่าเครือข่ายล้มเหลว)
ที่อยู่มัลติแคสต์ (Multicast)
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 สำหรับภูมิภาคเอเชีย
- DNS ของ Alibaba Cloud (จีน): 223.5.5.5 / 223.6.6.6
- DNSPod (จีน): 119.29.29.29
- 114 DNS (จีน): 114.114.114.114
ข้อเท็จจริงน่าสนใจเกี่ยวกับ 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% โดยอินเดีย สหรัฐอเมริกา และเยอรมนีนำหน้า ส่วนจีนอยู่ที่ประมาณ 30% ประเทศเบลเยียมมีอัตราการใช้งาน IPv6 สูงที่สุดในโลก มากกว่า 60%
🎂 ที่อยู่ IP แรก
เมื่อวันที่ 1 มกราคม 1983 อินเทอร์เน็ตได้เริ่มใช้งานโปรโตคอล TCP/IP เป็นครั้งแรก และที่อยู่ IP แรกก็เกิดขึ้น Leonard Kleinrock จาก BBN Technologies ถือเป็นบุคคลแรกที่ใช้ที่อยู่ IP
🗑️ การจัดสรรที่อยู่ IP อย่างไม่เหมาะสม
ในยุคแรกๆ อินเทอร์เน็ตจัดสรรที่อยู่ IP อย่างเอื้อเฟื้อ: MIT (มหาวิทยาลัยหนึ่ง) มีที่อยู่ IP 16 ล้านที่ (ทั้งช่วง 18.0.0.0/8) แอปเปิลก็มีที่อยู่ IP 16 ล้านที่ (17.0.0.0/8) ในขณะที่จีนแผ่นดินใหญ่ได้รับการจัดสรรที่อยู่ IP เพียงประมาณ 3.3 พันล้านที่ แต่ต้องรองรับผู้ใช้อินเทอร์เน็ตใกล้เคียง 1,000 ล้านคน — หากคำนวณตามสมมติฐานว่าผู้ใช้แต่ละคนมีอุปกรณ์ 2 เครื่อง จะต้องการที่อยู่ IP อย่างน้อย 2,000 ล้านที่ การจัดสรรที่ไม่สมดุลนี้ทำให้จีนต้องพึ่งพาเทคโนโลยี NAT อย่างมากเพื่อแบ่งปันที่อยู่ IP
🚫 รายการ IP ที่ถูกบล็อก
มีฐานข้อมูลรายชื่อ IP ที่ถูกแบล็กลิสต์หลายแห่งทั่วโลก (เช่น Spamhaus) ใช้ในการระบุ IP ที่มาจากการส่งอีเมลขยะ ซอฟต์แวร์เป็นอันตราย การโจมตี DDoS ฯลฯ เมื่อ IP ใดถูกเพิ่มลงในรายชื่อแบล็กลิสต์ อาจทำให้อีเมลถูกปฏิเสธหรือเว็บไซต์ถูกบล็อก
🤯 ตัวอย่างแปลกประหลาดของตำแหน่งทางภูมิศาสตร์ของ IP
ครอบครัวหนึ่งในรัฐแคนซัส สหรัฐอเมริกา ถูกฐานข้อมูล IP ของบริษัท MaxMind ตั้งค่าเป็นตำแหน่งเริ่มต้น (พิกัด 38°N 97°W ซึ่งเป็นศูนย์กลางทางภูมิศาสตร์ของสหรัฐอเมริกา) ทำให้ IP หลายล้านรายการที่ไม่สามารถระบุตำแหน่งได้ถูกชี้ไปยังที่นั่น ครอบครัวนี้จึงกลายเป็น "บ้านของแฮกเกอร์ทั่วสหรัฐอเมริกา" โดยได้รับโทรศัพท์รบกวนและถูกเยี่ยมเยียนจาก FBI ตำรวจ เจ้าหนี้ และผู้เสียหายจากฉ้อโกงเป็นจำนวนมหาศาล แม้แต่คนบางรายก็พังประตูเข้ามาในยามดึก ปี 2016 ครอบครัวนี้จึงฟ้องร้อง MaxMind และได้รับค่าชดเชยในที่สุด
💸 ที่อยู่ IPv4 สามารถซื้อขายได้
เนื่องจากที่อยู่ IPv4 หมดลง ที่อยู่ IP จึงกลายเป็นสินค้าที่สามารถซื้อขายได้ ราคาในตลาดมืดสูงถึง 40 ดอลลาร์ต่อที่อยู่ ปี 2011 Microsoft ซื้อที่อยู่ IPv4 666,000 ที่อยู่จากบริษัท Nortel ที่ล้มละลายด้วยราคา 7.5 ล้านดอลลาร์ คิดเฉลี่ยที่ละประมาณ 11.25 ดอลลาร์ ปี 2014 บริษัทเทคโนโลยีชั้นนำอย่าง Amazon และ Microsoft ต่างแข่งกันซื้อที่อยู่ IPv4 ทำให้ราคาพุ่งสูงขึ้นอย่างมาก
🤦 การคำนวณผิดพลาดของผู้ออกแบบ IPv4
ปี 1981 ผู้ออกแบบ IPv4 เชื่อว่า "ที่อยู่ 4.2 พันล้านที่อยู่ มนุษย์ใช้ไม่หมดแน่นอน" พวกเขาไม่เคยคิดเลยว่าอินเทอร์เน็ตจะเติบโตถึงขนาดนี้: ประชากรโลก 8 พันล้านคน แต่ละคนมีอุปกรณ์อย่างน้อย 2-3 เครื่อง บวกกับการเติบโตแบบก้าวกระโดดของอุปกรณ์ IoT หากการออกแบบในตอนนั้นเป็น 64 บิตหรือ 128 บิต ปัญหาการหมดที่อยู่ก็คงไม่เกิดขึ้นในวันนี้
🏠 ความลับของ 127.0.0.1
127.0.0.1 (localhost) ไม่ใช่แค่ที่อยู่เดียว แต่ช่วงทั้งหมด 127.0.0.0/8 (ประมาณ 16 ล้านที่อยู่) ล้วนเป็นที่อยู่รีไซเคิล คุณสามารถ 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 หมายถึงที่อยู่ลูปแบ็กของ IPv6
🚀 ที่อยู่ IP ไม่มีผลต่อความเร็วอินเทอร์เน็ต
หลายคนเข้าใจผิดว่าการเปลี่ยนที่อยู่ IP จะช่วยเพิ่มความเร็วอินเทอร์เน็ต แต่ความจริงแล้ว ที่อยู่ IP เพียงเป็น "หมายเลขบ้าน" บนเครือข่าย ความเร็วขึ้นอยู่กับแบนด์วิดธ์ เส้นทางการส่งข้อมูล และเซิร์ฟเวอร์ ไม่เกี่ยวข้องกับที่อยู่ IP โดยตรง
คุณลักษณะและข้อดี-ข้อเสียของ IPv6
ข้อดี
- ✓ พื้นที่ที่อยู่ขนาดใหญ่มาก: 2¹²⁸ ที่อยู่ แทบไม่มีวันหมด
- ✓ การจัดเส้นทางที่ง่ายขึ้น: โครงสร้างที่อยู่แบบชั้นเดียว ทำให้ตารางเส้นทางเล็กลง
- ✓ การกำหนดที่อยู่อัตโนมัติ: รองรับ SLAAC โดยไม่ต้องใช้ DHCP
- ✓ ความปลอดภัยที่ดีขึ้น: มีการรองรับ IPsec แบบฝังตัว
- ✓ คุณภาพบริการ (QoS) ที่ดีขึ้น: ฟิลด์แท็กการไหล ช่วยปรับปรุงแอปพลิเคชันแบบเรียลไทม์
- ✓ ไม่ต้องใช้ NAT: อุปกรณ์แต่ละตัวมีที่อยู่สาธารณะของตัวเอง
- ✓ รองรับการเคลื่อนที่: ปรับปรุงการใช้งานกับอุปกรณ์พกพา
ข้อเสีย
- ⚠ ปัญหาความเข้ากันได้: ต้องการอุปกรณ์และเครือข่ายที่รองรับ
- ⚠ ค่าใช้จ่ายในการเรียนรู้: รูปแบบที่อยู่ซับซ้อน จดจำยาก
- ⚠ ค่าใช้จ่ายในการเปลี่ยนผ่าน: ต้องอัปเกรดอุปกรณ์และซอฟต์แวร์
- ⚠ การใช้งานแบบคู่ขนาน: ในช่วงเปลี่ยนผ่านต้องรองรับทั้ง 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 จริงจาก HTTP header ที่เฉพาะเจาะจง
- • ลำดับความสำคัญ: CF-Connecting-IP > X-Forwarded-For > X-Real-IP > RemoteAddr
- • X-Forwarded-For อาจมีหลายที่อยู่ IP (คั่นด้วยเครื่องหมายจุลภาค) ที่อยู่แรกคือที่อยู่ IP จริงของลูกค้า
- • JavaScript บนเบราว์เซอร์ไม่สามารถรับที่อยู่ IP โดยตรงได้ ต้องเรียกใช้ API ของบุคคลที่สาม