Trình phân tích URL
Trình phân tích URL là công cụ miễn phí giúp tách địa chỉ web thành giao thức, đường dẫn và chuỗi truy vấn.
Trình phân tích URL trích xuất những gì?
Trình phân tích URL xác định các thành phần cấu trúc của địa chỉ web mà bạn không cần tự tách nội dung. Công cụ trả về ba trường được tạo bằng hàm parse_url của PHP.
- Giao thức cho biết giao thức hoặc cơ chế định địa chỉ, chẳng hạn như https hoặc http.
- Đường dẫn cho biết thành phần đường dẫn, chẳng hạn như /account/orders/42.
- Truy vấn chứa nội dung nằm sau dấu hỏi mở đầu thành phần truy vấn và trước dấu thăng chưa được mã hóa, chẳng hạn như page=2&sort=date.
Việc phân tích URL hữu ích khi kiểm tra yêu cầu API, URL callback, nhật ký ứng dụng hoặc dữ liệu của bên thứ ba. Bạn có thể phân biệt thông tin định tuyến với tham số truy vấn trước khi gỡ lỗi, ghi nhật ký hoặc biến đổi địa chỉ.
Các trường trả về không bao gồm riêng tên máy chủ, cổng hoặc phân mảnh. Nếu cần những thành phần này, hãy dùng một thư viện phân tích URL đầy đủ hơn trong ứng dụng.
Cách dùng Trình phân tích URL
Nhập URL đầy đủ hoặc một phần URL, rồi kiểm tra các giá trị giao thức, đường dẫn và truy vấn mà công cụ trả về. URL tuyệt đối đầy đủ thường cho kết quả rõ ràng nhất vì giao thức được nêu cụ thể.
- Sao chép URL từ trình duyệt, phản hồi API, bản ghi webhook hoặc nhật ký máy chủ.
- Giữ lại chuỗi truy vấn nếu bạn cần kiểm tra tên hoặc giá trị của tham số.
- So sánh đường dẫn được trả về với tuyến mà ứng dụng của bạn mong đợi.
- Kiểm tra xem giao thức và truy vấn có xuất hiện ở những vị trí mà tích hợp của bạn yêu cầu hay không.
Quá trình xử lý diễn ra trên máy chủ. Dữ liệu bạn nhập được truyền đến máy chủ qua HTTPS và không được lưu trữ. Dù vậy, đừng gửi mã truy cập còn hiệu lực, liên kết tải xuống có chữ ký, mã định danh phiên hoặc thông tin xác thực khác nếu một ví dụ đã che dữ liệu nhạy cảm vẫn đủ để giải đáp vấn đề.
Ví dụ và cách đọc kết quả
Với một URL API tuyệt đối, trình phân tích sẽ tách giao thức khỏi tuyến và chuỗi truy vấn thô.
Dữ liệu nhập https://api.example.co.uk/v1/orders/42?expand=items¤cy=GBP
Giao thức https
Đường dẫn /v1/orders/42
Truy vấn expand=items¤cy=GBP
Truy vấn được trả về dưới dạng một thành phần duy nhất. Theo quy ước phổ biến đối với biểu mẫu và chuỗi truy vấn, dấu và phân tách các trường, còn dấu bằng đầu tiên trong mỗi trường phân tách tên với giá trị. Chỉ phân tích URL không thể xác nhận expand hoặc currency có phải là tham số được API hỗ trợ hay không.
Một tham chiếu tương đối cũng có thể chứa đường dẫn và truy vấn mà không cần chỉ định giao thức.
Dữ liệu nhập /search?q=red%20shoes&page=2
Giao thức no scheme component
Đường dẫn /search
Truy vấn q=red%20shoes&page=2
Việc không có giao thức thường là bình thường đối với các liên kết được tạo trong cùng một trang web. Tuy nhiên, nếu dữ liệu phải chứa URL callback tuyệt đối, kết quả này có thể cho thấy tiền tố https:// đang bị thiếu.
Trình phân tích này không phải công cụ xác thực URL. Công cụ có thể giúp phát hiện cấu trúc đáng ngờ, chẳng hạn như thiếu giao thức, đường dẫn không đúng dự kiến hoặc nội dung truy vấn nằm sai vị trí. Tuy nhiên, kết quả phân tích không chứng minh rằng địa chỉ đó tồn tại, được phân giải qua DNS hay trả về phản hồi HTTP thành công.
Khoảng trắng, dấu câu và dữ liệu nhập bất thường được xử lý thế nào?
Các ký tự dành riêng ảnh hưởng đến cách URL được phân chia, còn ký tự đã mã hóa nhìn chung vẫn thuộc thành phần chứa chúng. Trình phân tích chỉ tách các thành phần, không giải mã hoặc chuẩn hóa nội dung bên trong.
- Dấu hỏi chưa được mã hóa sẽ mở đầu thành phần truy vấn. Nếu một dấu hỏi theo nghĩa đen được dùng làm dữ liệu bên ngoài truy vấn hiện có, dấu đó cần được mã hóa phần trăm nếu không muốn nó bị hiểu là ký tự phân cách truy vấn.
- Dấu và thường phân tách các tham số truy vấn, nhưng công cụ này trả về toàn bộ chuỗi truy vấn thay vì diễn giải từng tham số.
- Dấu thăng (#) chưa được mã hóa là ký tự phân cách phân mảnh trong cú pháp URL tiêu chuẩn. Dữ liệu phân mảnh không nằm trong các trường được trả về ở đây.
- Khoảng trắng thông thường cần được mã hóa, phổ biến nhất là %20. Dấu cộng có thể đại diện cho khoảng trắng trong dữ liệu truy vấn được mã hóa theo biểu mẫu, nhưng cách hiểu đó thuộc bước giải mã truy vấn chứ không phải phân tích URL.
- Văn bản có dấu hoặc ký tự ngoài hệ chữ Latinh trong đường dẫn hay truy vấn nên dùng mã hóa phần trăm UTF-8 khi hệ thống tiếp nhận yêu cầu. Tên miền quốc tế hóa sử dụng dạng tương thích ASCII để bảo đảm khả năng tương thích rộng với các giao thức.
- Chữ số không có cách xử lý đặc biệt. Chúng vẫn là các ký tự thông thường trong đường dẫn hoặc giá trị truy vấn.
Dữ liệu nhập trống không có cấu trúc URL hữu ích để kiểm tra. URL rất dài cũng có thể gặp giới hạn ở nơi khác, bao gồm trình duyệt, máy chủ web, proxy và framework ứng dụng. Công cụ này không xác định liệu một hệ thống khác có chấp nhận URL với độ dài cụ thể hay không.
Khi nào nên phân tích URL?
Bạn nên phân tích URL khi cần tìm hiểu cấu trúc của địa chỉ trước khi mã nguồn hoặc hạ tầng xử lý địa chỉ đó. Các trường hợp thường gặp gồm kiểm tra địa chỉ callback của webhook trước khi triển khai, xem xét đích chuyển hướng, tách tuyến API khỏi bộ lọc và đọc URL được sao chép từ nhật ký proxy ngược.
Việc này thường không cần thiết nếu chỉ có máy xử lý một URL đã biết và có cấu trúc sẵn, đồng thời ứng dụng của bạn đã dùng thư viện URL. Đây cũng không phải thao tác phù hợp nếu bạn cần kiểm tra khả năng truy cập, theo dõi chuyển hướng, giải mã từng tham số truy vấn hoặc xác minh độ tin cậy của tên miền.
Đối với tác vụ lặp lại hoặc tự động, hãy dùng chức năng xử lý URL có sẵn trong môi trường của bạn. PHP có parse_url, JavaScript trong trình duyệt có giao diện URL, Node.js cung cấp lớp URL và Python có urllib.parse. Khi cần xử lý một tệp nhật ký chứa hàng nghìn địa chỉ, một tập lệnh dòng lệnh nhỏ sẽ phù hợp hơn thao tác thủ công.
Đừng phân tích URL chỉ để định dạng lại một địa chỉ vốn đã có chính xác cách biểu diễn mà hệ thống tiếp nhận yêu cầu. Việc mã hóa lại hoặc dựng lại địa chỉ khi không có lý do rõ ràng có thể làm thay đổi chữ ký truy vấn, tham số trùng lặp hoặc ký tự dành riêng.
Câu hỏi thường gặp
Có thể phân tích URL không có http hoặc https không?
Có. Hàm parse_url của PHP có thể diễn giải tham chiếu tương đối và URL không đầy đủ, nhưng sẽ không có giao thức nếu dữ liệu nhập không cung cấp thành phần này. Hãy thận trọng với địa chỉ tương đối theo giao thức bắt đầu bằng hai dấu gạch chéo, vì ý nghĩa của chúng phụ thuộc vào tài liệu hoặc ứng dụng xung quanh.
Các tham số truy vấn lặp lại có được giữ nguyên không?
Truy vấn được trả về dưới dạng thành phần thô, vì vậy các tên lặp lại có thể vẫn xuất hiện theo đúng thứ tự ban đầu. Cách những giá trị như tag=red&tag=blue được chuyển thành mảng hoặc các giá trị riêng lẻ phụ thuộc vào trình phân tích chuỗi truy vấn được dùng sau đó.
Dán URL có chữ ký vào công cụ có an toàn không?
Dữ liệu nhập được gửi qua HTTPS và không được lưu trữ, nhưng URL có chữ ký vẫn có thể cấp quyền truy cập vào nội dung riêng tư trong thời gian chữ ký còn hiệu lực. Hãy che mã thông báo hoặc thay tên máy chủ và các giá trị bằng dữ liệu giữ chỗ tương ứng nếu không cần dùng thông tin xác thực chính xác.
Tại sao URL trông hợp lệ lại hoạt động khác trong ứng dụng của tôi?
Sự khác biệt có thể xuất phát từ cách từng framework giải mã truy vấn và chuẩn hóa Unicode. Ứng dụng cũng có thể áp dụng thêm quy tắc sau khi phân tích, bao gồm danh sách tên máy chủ được phép và các hạn chế chuyển hướng. Hãy so sánh URL thô theo từng byte, sau đó kiểm tra nội dung mà ứng dụng giải mã hoặc ghi lại trước khi gửi yêu cầu.
Công cụ phổ biến
Dễ dàng tạo chữ ký tùy chỉnh của riêng bạn và tải xuống nó một cách dễ dàng.
Lấy kích thước của một văn bản theo Byte (B), Kilobyte (KB) hoặc Megabyte (MB).
Sử dụng công cụ ping của chúng tôi để kiểm tra nhanh chóng và hiệu quả trạng thái cùng thời gian phản hồi của bất kỳ trang web, máy chủ hoặc cổng nào.
Công cụ tra cứu IP của Digily Link cung cấp thông tin chi tiết về mọi địa chỉ IP. Hãy dùng dịch vụ trực tuyến miễn phí này để nhận dữ liệu IP toàn diện.
Tạo ngay liên kết WhatsApp miễn phí bằng Trình tạo liên kết WhatsApp của chúng tôi. Thêm tin nhắn tùy chỉnh và bắt đầu trò chuyện chỉ với một lần nhấp, không cần đăng nhập hay viết mã.