วิธีรับ IP ท้องถิ่นจากรหัสส่วนขยายของ Firefox

ฉันกำลังเขียนส่วนขยาย Firefox ที่ใช้ nsIServerSocket เพื่อฟังการเชื่อมต่อซ็อกเก็ต ฉันกำลังมองหาวิธีสำหรับโค้ดส่วนขยายเพื่อเรียนรู้ที่อยู่เครือข่ายท้องถิ่นของเครื่องที่ใช้ส่วนขยาย Firefox โดยทางโปรแกรม ข้อมูลนี้ได้รับการสื่อสารกับไคลเอนต์บนเครือข่ายท้องถิ่นนอกย่านความถี่เพื่อให้สามารถเปิดการเชื่อมต่อซ็อกเก็ตไปยังส่วนขยายได้

การวิจัยของฉันเกี่ยวกับเรื่องนี้จนถึงตอนนี้มีเพียงผู้ที่ต้องการค้นหาที่อยู่ IP ของ โหลดเว็บไซต์ โดยวิธี การแก้ไข DNS หรือใช้ แอปเพล็ต Java) ซึ่งไม่เหมาะสำหรับส่วนขยาย FF หน้า Mozilla Developer บน Geolocation API กล่าวถึง:

"มีการแลกเปลี่ยนข้อมูล รวมถึงข้อมูลจุดเชื่อมต่อ WiFi โทเค็นการเข้าถึง (คล้ายกับคุกกี้ 2 สัปดาห์) และที่อยู่ IP ของผู้ใช้"

แต่ไม่ได้ระบุ API เพื่อเข้าถึงที่อยู่ IP ของผู้ใช้โดยตรง

ความคิดเดียวของฉัน ณ จุดนี้คือการเรียกใช้กระบวนการในเครื่องโดยใช้ nsIProcess และแยกวิเคราะห์ IP จากที่นั่น . สิ่งนี้ดูเหมือนเป็นการแฮ็กอย่างมาก และจะต้องได้รับการจัดการตามแต่ละระบบปฏิบัติการ เช่น. ฉันจะรัน ifconfig, netcfg, ipconfig ได้หรือไม่ ด้วยอาร์กิวเมนต์อะไร?

มีใครทราบวิธีแก้ปัญหาที่ดีกว่าหรือไม่


person Daniel    schedule 13.03.2012    source แหล่งที่มา
comment
ขอบคุณสำหรับลิงก์แก้ไข Bergi   -  person Daniel    schedule 14.03.2012


คำตอบ (2)


คุณใช้ nsIDNSService interface ที่นี่เช่นกัน โดยมีคุณสมบัติ myHostName ที่สามารถแก้ไขได้:

var dns = Components.classes["@mozilla.org/network/dns-service;1"]
                    .getService(Components.interfaces.nsIDNSService);
var myName = dns.myHostName;
var record = dns.resolve(myName, 0);
while (record.hasMore())
  alert(record.getNextAddrAsString());

คุณควรคาดหวังว่าจะสร้างที่อยู่หลายแห่งและไม่ใช่ทั้งหมดที่จะใช้ได้ - แม้สำหรับเครือข่ายท้องถิ่นคุณจะได้รับที่อยู่อย่างน้อยสองแห่ง (IPv6 และ IPv4) นอกเหนือจากนั้นคุณอาจได้รับที่อยู่ Teredo ที่อยู่จากอะแดปเตอร์เสมือน ติดตั้งโดย VMWare & Co. และอื่นๆ

person Wladimir Palant    schedule 14.03.2012
comment
ขอบคุณ นี่คือสิ่งที่ฉันกำลังมองหา ฉันขอขอบคุณที่แจ้งให้ทราบเกี่ยวกับที่อยู่อินเทอร์เฟซหลายแห่ง - person Daniel; 14.03.2012
comment
เฮ้ @ Wladimir-Palant ฉันรู้ว่ามันผ่านมาระยะหนึ่งแล้ว แต่ถ้าคุณรู้คำตอบ มันจะช่วยได้จริงๆ เมื่ออ่านโพสต์นี้แล้ว หมายความว่าส่วนเสริมของ Firefox อาจอ่านที่อยู่ IP ในเครื่องของคุณได้แม้ว่าคุณจะใช้พร็อกซีที่ไม่ระบุชื่อที่กำหนดค่าผ่าน Firefox หรือไม่ กล่าวอีกนัยหนึ่ง addon สามารถอ่านที่อยู่ IP ในเครื่องได้ตลอดเวลาแม้ว่าจะมีพร็อกซีอยู่ก็ตาม - person DomainsFeatured; 20.09.2016
comment
@DomainsFeatured: ขณะนี้ส่วนเสริมของ Firefox ไม่ได้อยู่ในแซนด์บ็อกซ์ แต่สามารถเข้าถึงคอมพิวเตอร์ของคุณได้อย่างเต็มที่ - ดังนั้นจึงสามารถทำสิ่งต่างๆ ได้มากมาย หากไม่มี nsIDNSService พวกเขาสามารถเรียกใช้คำสั่งภายนอกเพื่ออ่านการกำหนดค่าเครือข่ายของคุณได้ หรืออาจปิดใช้งานการตั้งค่าพร็อกซีชั่วคราวก็ได้ ส่วนขยายของเว็บกำลังจะเปลี่ยนแปลงสิ่งนั้น แต่ถึงอย่างนั้น ฉันก็ยังบอกว่าคุณควรเชื่อถือส่วนเสริมที่คุณติดตั้งไว้ได้ดีกว่า หากมองในแง่ดี ส่วนเสริมที่ได้รับการตรวจสอบโดย addons.mozilla.org มักจะใช้งานได้ดี - การตรวจสอบจะทำให้แน่ใจได้ว่าส่วนเสริมจะทำในสิ่งที่พวกเขาอ้างว่าทำ - person Wladimir Palant; 20.09.2016
comment
สวัสดี @ Wladimir-Palant ขอบคุณมากสำหรับการยืนยันว่าส่วนเสริมสามารถเข้าถึงข้อมูล IP ในเครื่องได้แม้ว่าจะไม่มี 'nsIDNSService' ก็ตาม หากคุณมีเวลา ฉันคิดว่าคุณสามารถตอบคำถามนี้ได้ดีกว่าคนส่วนใหญ่ และฉันจะเลือกคำตอบของคุณให้ถูกต้องและโหวตเห็นด้วย: stackoverflow.com/questions/39582880/ - person DomainsFeatured; 20.09.2016

ฉันพนันได้เลยว่าที่อยู่ IP ที่กล่าวถึงใน Geolocation API ไม่ใช่ที่อยู่ IP ของคอมพิวเตอร์ในระบบ ฉันหมายถึงที่ไหนในโลกคือ 192.168.0.100 อืม? โดยทั่วไปแล้วมันไม่ใช่ข้อมูลที่มีประโยชน์

เนื่องจากคุณกำลังติดต่อกับเครือข่ายท้องถิ่น คุณสามารถตั้งค่าหน้าเว็บเล็กๆ ที่จะพิมพ์ที่อยู่ของลูกค้าได้หรือไม่ จากนั้นคุณสามารถเรียนรู้ IP ของคุณได้โดยขอหน้าเว็บนั้น

person Josh    schedule 13.03.2012
comment
ข้อดี RE: Geolocation API วัตถุประสงค์/การปรับใช้ส่วนขยายของฉันขัดขวางสมมติฐานที่ว่าฉันสามารถเรียกใช้บริการแยกต่างหากเพื่อสะท้อนกลับ IP ที่ร้องขอได้ ไม่เช่นนั้นก็คงเป็นแนวคิดที่เป็นไปได้ ขอบคุณ! - person Daniel; 14.03.2012