ตัวแยกวิเคราะห์ URL

5 จาก 2 การให้คะแนน

ตัวแยกวิเคราะห์ URL เป็นเครื่องมือฟรีที่แยกที่อยู่เว็บออกเป็นสคีมา พาธ และสตริงการค้นหา

ตัวแยกวิเคราะห์ URL ดึงข้อมูลอะไรออกมาบ้าง?

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

  • Scheme ระบุโปรโตคอลหรือรูปแบบการกำหนดที่อยู่ เช่น https หรือ http
  • Path ระบุส่วนพาธ เช่น /account/orders/42
  • คิวรี แสดงข้อความหลังเครื่องหมายคำถามที่ใช้เริ่มส่วนการค้นหา และก่อนเครื่องหมายแฮชที่ไม่ได้เข้ารหัส เช่น page=2&sort=date

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

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

ใช้ตัวแยกวิเคราะห์ URL อย่างไร?

ป้อน URL แบบเต็มหรือบางส่วน แล้วตรวจสอบค่าสคีมา พาธ และการค้นหาที่เครื่องมือแสดง URL แบบสัมบูรณ์ที่ครบถ้วนมักให้ผลลัพธ์ชัดเจนที่สุด เพราะระบุสคีมาไว้อย่างชัดเจน

  1. คัดลอก URL จากเบราว์เซอร์ การตอบกลับของ API ระเบียนเว็บฮุก หรือบันทึกของเซิร์ฟเวอร์
  2. ใส่สตริงการค้นหาด้วย หากต้องการตรวจสอบชื่อหรือค่าของพารามิเตอร์
  3. เปรียบเทียบพาธในผลลัพธ์กับเส้นทางที่แอปพลิเคชันควรใช้
  4. ตรวจสอบว่ามีสคีมาและการค้นหาครบตามที่การเชื่อมต่อระบบของคุณต้องการหรือไม่

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

ตัวอย่างการใช้งานและวิธีอ่านผลลัพธ์

สำหรับ URL ของ API แบบสัมบูรณ์ เครื่องมือจะแยกโปรโตคอลออกจากเส้นทางและสตริงการค้นหาแบบดิบ

ข้อมูลที่ป้อน https://api.example.co.uk/v1/orders/42?expand=items&currency=GBP

Scheme https

Path /v1/orders/42

Query expand=items&currency=GBP

การค้นหาจะถูกส่งกลับมาเป็นส่วนประกอบเดียว ตามรูปแบบทั่วไปของฟอร์มและสตริงการค้นหา เครื่องหมายแอมเพอร์แซนด์ใช้คั่นแต่ละฟิลด์ ส่วนเครื่องหมายเท่ากับตัวแรกในแต่ละฟิลด์ใช้แยกชื่อออกจากค่า การแยกวิเคราะห์ URL เพียงอย่างเดียวไม่ได้ยืนยันว่า expand หรือ currency เป็นพารามิเตอร์ที่ API รองรับ

การอ้างอิงแบบสัมพัทธ์ก็มีพาธและการค้นหาได้โดยไม่ต้องระบุสคีมา

ข้อมูลที่ป้อน /search?q=red%20shoes&page=2

Scheme no scheme component

Path /search

Query q=red%20shoes&page=2

ลิงก์ที่สร้างขึ้นเพื่อใช้ภายในเว็บไซต์เดียวกันมักไม่มีสคีมา ซึ่งถือเป็นเรื่องปกติ แต่หากข้อมูลควรมี URL เรียกกลับแบบสัมบูรณ์ ผลลัพธ์เช่นนี้อาจบ่งชี้ว่าคำนำหน้า https:// หายไป

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

จะเกิดอะไรขึ้นเมื่อมีช่องว่าง เครื่องหมายวรรคตอน หรือข้อมูลที่ไม่ปกติ?

อักขระสงวนมีผลต่อการแบ่งส่วน URL ส่วนอักขระที่เข้ารหัสแล้วโดยทั่วไปจะยังอยู่ในส่วนประกอบเดิม เครื่องมือนี้จะแยกส่วนประกอบเท่านั้น โดยไม่ถอดรหัสหรือปรับเนื้อหาภายในให้เป็นรูปแบบมาตรฐาน

  • เครื่องหมายคำถามที่ไม่ได้เข้ารหัสจะเริ่มส่วนการค้นหา หากต้องการใช้เครื่องหมายคำถามเป็นข้อมูลจริงนอกส่วนการค้นหาที่มีอยู่ ควรเข้ารหัสแบบเปอร์เซ็นต์เมื่อเครื่องหมายนั้นอาจถูกตีความเป็นตัวคั่นการค้นหา
  • โดยทั่วไปเครื่องหมายแอมเพอร์แซนด์ใช้คั่นพารามิเตอร์การค้นหา แต่เครื่องมือนี้จะส่งกลับสตริงการค้นหาทั้งหมด ไม่ได้ตีความแยกทีละพารามิเตอร์
  • ตามไวยากรณ์ URL มาตรฐาน เครื่องหมายแฮช (#) ที่ไม่ได้เข้ารหัสคือตัวคั่นแฟรกเมนต์ และข้อมูลแฟรกเมนต์ไม่ใช่หนึ่งในช่องผลลัพธ์ของเครื่องมือนี้
  • ตามปกติควรเข้ารหัสช่องว่าง ซึ่งมักใช้รูปแบบ %20 เครื่องหมายบวกอาจแทนช่องว่างในข้อมูลการค้นหาที่เข้ารหัสแบบฟอร์ม แต่การตีความดังกล่าวเป็นหน้าที่ของการถอดรหัสการค้นหา ไม่ใช่การแยกวิเคราะห์ URL
  • ข้อความในพาธหรือการค้นหาที่มีอักขระเน้นเสียงหรืออักขระที่ไม่ใช่ละติน ควรใช้การเข้ารหัสแบบเปอร์เซ็นต์ด้วย UTF-8 เมื่อระบบปลายทางกำหนด ชื่อโดเมนสากลใช้รูปแบบที่เข้ากันได้กับ ASCII เพื่อให้รองรับโปรโตคอลได้อย่างกว้างขวาง
  • ตัวเลขไม่มีลักษณะการแยกวิเคราะห์เป็นพิเศษ และจะยังคงเป็นอักขระทั่วไปภายในพาธหรือค่าการค้นหา

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

ควรแยกวิเคราะห์ URL เมื่อใด?

ควรแยกวิเคราะห์ URL เมื่อต้องวินิจฉัยโครงสร้างของที่อยู่ก่อนที่โค้ดหรือโครงสร้างพื้นฐานจะนำไปใช้งาน กรณีทั่วไป ได้แก่ การตรวจสอบที่อยู่เรียกกลับของเว็บฮุกก่อนนำระบบขึ้นใช้งาน การตรวจสอบปลายทางการเปลี่ยนเส้นทาง การแยกเส้นทาง API ออกจากตัวกรอง และการอ่าน URL ที่คัดลอกมาจากบันทึกของรีเวิร์สพร็อกซี

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

สำหรับงานที่ทำซ้ำหรือทำแบบอัตโนมัติ ให้ใช้ความสามารถด้าน URL ที่มีมาในสภาพแวดล้อมของคุณ PHP มี parse_url, JavaScript ในเบราว์เซอร์มีอินเทอร์เฟซ URL, Node.js มีคลาส URL และ Python มี urllib.parse หากต้องประมวลผลไฟล์บันทึกที่มีที่อยู่หลายพันรายการ สคริปต์บรรทัดคำสั่งขนาดเล็กจะเหมาะกว่าการแยกวิเคราะห์ด้วยตนเอง

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

คำถามที่พบบ่อย

แยกวิเคราะห์ URL ที่ไม่มี http หรือ https ได้ไหม?

ได้ ฟังก์ชัน parse_url ของ PHP สามารถตีความการอ้างอิงแบบสัมพัทธ์และ URL บางส่วนได้ แต่จะไม่มีค่าสคีมาหากไม่ได้ระบุไว้ตั้งแต่แรก โปรดระวังที่อยู่แบบอิงสคีมาซึ่งขึ้นต้นด้วยเครื่องหมายทับสองตัว เพราะความหมายจะขึ้นอยู่กับเอกสารหรือแอปพลิเคชันที่ใช้ที่อยู่นั้น

พารามิเตอร์การค้นหาที่มีชื่อซ้ำจะยังอยู่ครบไหม?

การค้นหาจะถูกส่งกลับมาเป็นส่วนประกอบแบบดิบ ชื่อที่ซ้ำจึงยังคงอยู่ตามลำดับเดิมได้ ส่วนค่าอย่าง tag=red&tag=blue จะถูกแปลงเป็นอาร์เรย์หรือค่าแยกรายการอย่างไร ขึ้นอยู่กับตัวแยกวิเคราะห์สตริงการค้นหาที่นำมาใช้ในภายหลัง

วาง URL ที่ลงนามไว้ในเครื่องมือนี้ปลอดภัยไหม?

ข้อมูลที่ป้อนจะส่งผ่าน HTTPS และไม่มีการจัดเก็บ แต่ URL ที่ลงนามอาจยังใช้เข้าถึงเนื้อหาส่วนตัวได้ตราบใดที่ลายเซ็นยังมีผล เมื่อไม่จำเป็นต้องใช้ข้อมูลรับรองจริง ให้ปกปิดโทเค็นหรือแทนชื่อโฮสต์และค่าต่างๆ ด้วยตัวอย่างที่สื่อความหมายเดียวกัน

ทำไม URL ที่ดูถูกต้องจึงทำงานต่างออกไปในแอปพลิเคชัน?

ความแตกต่างอาจเกิดจากวิธีถอดรหัสการค้นหาและการปรับ Unicode ให้เป็นรูปแบบมาตรฐานที่แต่ละเฟรมเวิร์กใช้ แอปพลิเคชันอาจใช้กฎเพิ่มเติมหลังแยกวิเคราะห์ด้วย เช่น รายการชื่อโฮสต์ที่อนุญาตและข้อจำกัดในการเปลี่ยนเส้นทาง ให้เปรียบเทียบข้อมูลดิบของ URL แบบไบต์ต่อไบต์ จากนั้นตรวจสอบว่าแอปพลิเคชันถอดรหัสหรือเขียนส่วนใดใหม่ก่อนส่งคำขอ

เครื่องมือยอดนิยม