Bộ phân tích URL/ thanh tra
Dán một hay nhiều địa chỉ URL (một trên mỗi dòng) để phân tích mỗi địa chỉ Mạng, máy, đường dẫn, chuỗi truy vấn, và mảnh, với mỗi tham số truy vấn được giải mã.
Dán một hay nhiều địa chỉ URL (một trên mỗi dòng) để phân tích mỗi địa chỉ Mạng, máy, đường dẫn, chuỗi truy vấn, và mảnh, với mỗi tham số truy vấn được giải mã.
Một địa chỉ URL chỉ có thể chứa chữ cái, chữ số an toàn, và một bộ ký hiệu nhỏ (- _ . ~). Mọi thứ khác, bao gồm không gian, phân loại, và các nhân vật không phải là Anh, phải được đại diện với phân số phần trăm trước khi nó có thể đi vào trong một URL.
Phần trăm thay thế một ký tự với một dấu phần trăm sau đó với giá trị thập lục phân hai chữ số, sử dụng UTF-8 để làm bất cứ điều gì bên ngoài đường cong cơ bản. Một không gian trở thành %20, một ampersand trở thành %26, và một ký tự được nhấn mạnh hoặc không phải Latin có thể trở thành một số dãy %XX trong một hàng, vì UTF-8 thể hiện nó là nhiều hơn một byte.
Các ký tự như? & = # và / có một ý nghĩa đặc biệt trong một cấu trúc URL: chúng đánh dấu chuỗi truy vấn, tham số riêng biệt, hoặc giới thiệu mảnh đó. Nếu dữ liệu của bạn cần chứa một trong những kí tự này như là một giá trị thay vì cấu trúc, mã hóa nó trước, hoặc trình duyệt hay máy phục vụ có thể hiểu sai nơi một phần của địa chỉ URL kết thúc và lần sau bắt đầu.
Giải mã đảo chiều của tiến trình: nó đọc mỗi chuỗi %X X trở lại ký tự (hoặc byte), nó đại diện, đó chính xác là những gì công cụ bên trên làm.
| Ký tự | Đã mã hóa | Nơi nó được dùng |
|---|---|---|
| không gian | %20 | Dấu tách từ bên trong một giá trị |
| ! | %21 | |
| " | %22 | |
| # | %23 | Khởi động các mảnh |
| % | %25 | Bắt đầu chuỗi mã phần trăm |
| & | %26 | Tham số truy vấn riêng |
| ' | %27 | |
| ( | %28 | |
| ) | %29 | |
| + | %2B | Thường xuyên đọc là một khoảng trống bên trong một chuỗi truy vấn |
| , | %2C | |
| / | %2F | Chia đoạn |
| : | %3A | Theo kế hoạch, ví dụ https: |
| ; | %3B | |
| = | %3D | Gán giá trị tham số truy vấn |
| ? | %3F | Chạy chuỗi truy vấn |
| @ | %40 | |
| [ | %5B | |
| ] | %5D |
Một học sinh sao chép một địa chỉ web từ biểu mẫu trực tuyến và thấy đoạn văn bản như science%20project%20notes. Một lập trình viên mới vào nghề kiểm tra một yêu cầu API và phát hiện dấu và (&) bên trong giá trị tìm kiếm xuất hiện dưới dạng %26. Liên kết vẫn hoạt động, nhưng rất khó đọc và khó gỡ lỗi.
Công cụ giải mã URL chuyển các chuỗi mã hóa phần trăm trở lại thành ký tự tương ứng. Ví dụ, %20 thường trở thành dấu cách, còn %26 trở thành dấu và (&).
Việc giải mã hữu ích để hiểu các liên kết, kiểm tra tham số truy vấn, tìm hiểu cách mã hóa web và chẩn đoán các yêu cầu bị sai định dạng. Cần thực hiện cẩn thận vì các ký tự dành riêng có thể làm thay đổi cấu trúc của URL sau khi được giải mã.
Công cụ này không xác định một địa chỉ đích có an toàn, chính xác hay được cho phép hay không. Nó chỉ thay đổi cách biểu diễn của các ký tự đã mã hóa. Học sinh và lập trình viên vẫn cần tự kiểm tra máy chủ lưu trữ, đường dẫn, tham số và các giá trị đã giải mã.
URL sử dụng một số ký tự nhất định để phân tách các phần của nó. Dấu hỏi có thể bắt đầu một chuỗi truy vấn, dấu và (&) có thể phân tách các tham số, và dấu thăng có thể xác định một đoạn (fragment).
Khi một trong các ký tự này cần xuất hiện như dữ liệu thay vì dấu phân tách cấu trúc, nó có thể được mã hóa phần trăm. Dấu phần trăm được theo sau bởi hai chữ số thập lục phân đại diện cho một giá trị byte.
| Giá Trị Mã Hóa | Ký Tự Giải Mã | Ý Nghĩa Thông Thường |
|---|---|---|
%20 |
Dấu cách | Phân tách các từ trong một giá trị |
%21 |
! |
Dấu chấm than |
%23 |
# |
Dấu thăng hoặc dấu hiệu đoạn (fragment) |
%26 |
& |
Dấu và hoặc dấu phân tách truy vấn |
%2B |
+ |
Dấu cộng |
%2F |
/ |
Dấu gạch chéo hoặc dấu phân tách đường dẫn |
%3A |
: |
Dấu hai chấm |
%3D |
= |
Dấu bằng hoặc dấu phân tách tham số |
%3F |
? |
Dấu hỏi hoặc dấu hiệu truy vấn |
Các chữ cái thập lục phân trong chuỗi mã hóa phần trăm không phân biệt chữ hoa chữ thường, vì vậy %2F và %2f đại diện cho cùng một byte.
Hãy xem ví dụ này:
https://example.edu/search?q=water%20cycle&level=grade%206#results
Các phần chính của nó là:
httpsexample.edu/searchq=water%20cycle&level=grade%206resultsCác giá trị truy vấn được giải mã thành "water cycle" và "grade 6". Dấu và mang tính cấu trúc giữa các tham số không nên bị nhầm lẫn với dấu và được mã hóa bên trong một giá trị.
Lập trình viên thường gây ra vấn đề khi giải mã toàn bộ URL trong khi chỉ nên giải mã một thành phần. Các ký tự dành riêng có thể có vai trò khác nhau tùy vào vị trí chúng xuất hiện.
Giả sử một truy vấn chứa:
?topic=research%26writing
Giá trị đã mã hóa này đại diện cho:
research&writing
Dấu và ở đây là một phần của giá trị chủ đề. Nếu toàn bộ truy vấn được giải mã rồi sau đó phân tích sai, dấu và có thể bị hiểu nhầm là dấu phân tách để đưa vào một tham số khác.
Một ứng dụng đáng tin cậy sẽ phân tích URL theo đúng cấu trúc của nó và giải mã từng thành phần bằng một API URL phù hợp, thay vì sử dụng phép thay thế chuỗi tùy tiện.
Học sinh xem xét:
https://example.edu/library?topic=space%20science
Các em xác định máy chủ, đường dẫn, tên tham số và giá trị đã mã hóa.
Giá trị space%20science trở thành space science. Học sinh giải thích lý do tại sao dấu cách theo nghĩa đen thường không được viết trực tiếp trong một URL được chia sẻ.
Giáo viên đưa ra:
?title=Design%20%26%20Technology
Tiêu đề đã giải mã là Design & Technology. Học sinh nhận thấy rằng dấu và đã mã hóa thuộc về tiêu đề chứ không phải để phân tách các tham số.
Học sinh sử dụng Công Cụ Mã Hóa URL để chuẩn bị một giá trị mới, sau đó giải mã nó và so sánh kết quả.
Một chuỗi chứa mã thoát phần trăm không đầy đủ như %2. Học sinh xác định lý do tại sao cần hai chữ số thập lục phân sau dấu phần trăm.
Một học sinh sao chép liên kết tìm kiếm thư viện chứa nhiều từ được mã hóa. URL hiển thị rất khó diễn giải.
Học sinh giải mã các giá trị truy vấn và xác nhận những từ khóa tìm kiếm và bộ lọc nào đã được đưa vào. Máy chủ lưu trữ được kiểm tra trước khi mở liên kết.
Điều này giúp học sinh hiểu cách một trang web truyền tải thông tin tìm kiếm giữa các trang.
Một lập trình viên mới vào nghề gửi một yêu cầu chứa tiêu đề khóa học có dấu và. Máy chủ nhận tiêu đề này như hai tham số riêng biệt.
Lập trình viên kiểm tra yêu cầu thô và phát hiện dấu và chưa được mã hóa thành dữ liệu. Giá trị được chuẩn bị lại bằng một API URL chuẩn và kiểm thử lại.
Công cụ giải mã giúp giải thích yêu cầu, nhưng cách khắc phục lâu dài là sử dụng xử lý URL có cấu trúc thay vì thay thế thủ công.
Một giáo viên nhận được liên kết đến một tài liệu lớp học, nhưng địa chỉ đích báo rằng không tìm thấy tệp.
URL được kiểm tra và giải mã. Tên tệp chứa một dấu gạch chéo có thể đã bị xử lý như dấu phân tách đường dẫn, hoặc một dấu cách đã bị sao chép sai.
Giáo viên xin liên kết chia sẻ mới từ chủ sở hữu tài liệu thay vì mù quáng chỉnh sửa một địa chỉ riêng tư không quen thuộc.
Học sinh tạo một biểu mẫu tìm kiếm đơn giản và quan sát URL sau khi gửi văn bản chứa dấu cách và dấu câu.
Các em giải mã giá trị tham số và so sánh với dữ liệu đầu vào gốc của biểu mẫu. Cả lớp thảo luận lý do tại sao trình duyệt mã hóa các giá trị trước khi đưa chúng vào URL.
Bài tập này không sử dụng mật khẩu thật, hồ sơ học sinh hay các câu trả lời riêng tư.
Một liên kết trong bản tin trường học chứa nhiều tham số theo dõi. Giáo viên muốn hiểu thông tin nào được đưa vào trước khi chia sẻ liên kết đó.
URL được tách thành các tham số và giá trị của chúng được giải mã. Các giá trị theo dõi không cần thiết chỉ nên bị loại bỏ khi việc đó không làm hỏng địa chỉ đích cần thiết.
Liên kết cuối cùng được kiểm thử thay vì mặc định là hoạt động tốt sau khi chỉnh sửa thủ công.
Một lớp tin học thử nghiệm một cụm từ ngắn không phải tiếng Anh trong URL. Kết quả mã hóa chứa nhiều chuỗi phần trăm vì các ký tự UTF-8 có thể sử dụng nhiều byte.
Học sinh giải mã toàn bộ chuỗi và so sánh với cụm từ gốc. Việc bỏ sót một byte mã hóa phần trăm có thể tạo ra ký tự thay thế hoặc văn bản không hợp lệ.
Hoạt động này cho thấy rằng một ký tự hiển thị không phải lúc nào cũng tương ứng với một byte mã hóa.
Một lập trình viên mong đợi một dấu cách nhưng lại thấy %2520. Chuỗi %25 đại diện cho dấu phần trăm, vì vậy một lượt giải mã cho ra %20, và một lượt khác có thể cho ra dấu cách.
Lập trình viên truy tìm nơi giá trị đã bị mã hóa hai lần. Luồng dữ liệu được sửa lại thay vì giải mã lặp đi lặp lại mọi dữ liệu đầu vào.
Một liên kết chứa một URL đã mã hóa khác bên trong tham số như redirect hoặc next.
Người dùng giải mã giá trị đó thành văn bản thuần túy và kiểm tra máy chủ đích thực sự trước khi mở nó. Không nên tin tưởng một địa chỉ đã mã hóa chỉ vì địa chỉ đích cuối cùng của nó khó đọc.
| Đầu Vào | Mã Hóa Có Khả Năng | Công Cụ Phù Hợp | Ví Dụ Đã Giải Mã |
|---|---|---|---|
lesson%20notes |
Mã hóa phần trăm URL | Giải Mã URL | lesson notes |
<p> |
Thực thể HTML | Giải Mã HTML | <p> |
SGVsbG8= |
Base64 | Giải Mã Base64 | Hello |
u003F |
Mã thoát Unicode | Bộ phân tích JSON hoặc bộ phân tích theo ngôn ngữ | ? |
Sử dụng Công Cụ Giải Mã HTML cho các tham chiếu thực thể và Công Cụ Giải Mã Base64 chỉ khi biết chắc dữ liệu sử dụng các định dạng đó.
Dấu cách thường được biểu diễn dưới dạng %20. Trong kiểu mã hóa truy vấn theo biểu mẫu, dấu cộng cũng có thể được hiểu là dấu cách.
Điều này tạo ra một điểm khác biệt quan trọng:
class%20notes thường được giải mã thành class notes.class+notes có thể được giải mã thành class notes trong ngữ cảnh truy vấn biểu mẫu.%2B.Hãy sử dụng phương pháp giải mã được thiết kế cho thành phần và định dạng cụ thể. Bộ giải mã đường dẫn và bộ giải mã truy vấn biểu mẫu có thể không xử lý dấu cộng theo cùng một cách.
Mã hóa phần trăm hoạt động trên các byte. Một ký tự nằm ngoài bảng ASCII cơ bản có thể được biểu diễn bằng nhiều byte mã hóa.
Ví dụ, một chữ cái có dấu hoặc một ký tự tiếng Ả Rập có thể xuất hiện dưới dạng một chuỗi gồm nhiều mã thoát phần trăm. Tất cả các byte cần thiết phải giữ đúng thứ tự và được diễn giải bằng đúng bảng mã ký tự.
Nếu kết quả đầu ra chứa các ký hiệu thay thế, hãy kiểm tra xem:
Các ký tự dành riêng có thể làm thay đổi cấu trúc sau khi giải mã. Hãy tách URL thành các thành phần và chỉ giải mã giá trị mong muốn.
Việc giải mã lặp lại có thể biến dữ liệu vốn an toàn thành các dấu phân tách đang hoạt động hoặc các đường dẫn ngoài ý muốn. Hãy tìm hiểu lý do tại sao có nhiều lớp mã hóa tồn tại.
Việc thay thế %20 bằng dấu cách không xử lý được tất cả các ký tự đã mã hóa, chuỗi UTF-8, dữ liệu đầu vào sai định dạng hoặc quy tắc về dấu cộng. Hãy sử dụng một bộ phân tích URL có cấu trúc hoặc một API chuẩn trong mã nguồn.
Hãy giải mã nó thành văn bản trước tiên. Kiểm tra giao thức, tên máy chủ, đường dẫn và tham số trước khi quyết định có nên truy cập hay không.
%26 và & đều có thể đại diện cho dấu và trong các ngữ cảnh khác nhau. Hãy chọn công cụ giải mã dựa trên cách biểu diễn thực tế.
Một dấu phần trăm cần được theo sau bởi hai chữ số thập lục phân. Các chuỗi không đầy đủ hoặc không hợp lệ có thể cho thấy dữ liệu đầu vào bị hỏng.
URL có thể xuất hiện trong lịch sử trình duyệt, nhật ký, công cụ phân tích, ảnh chụp màn hình và tin nhắn được chia sẻ. Không nên đặt thông tin đăng nhập nhạy cảm trong chuỗi truy vấn.
Các giá trị đã giải mã có thể chứa các ký tự mang ý nghĩa đặc biệt. Một dấu gạch chéo đã giải mã có thể ảnh hưởng đến đường dẫn, một dấu và có thể làm thay đổi tham số, và các dấu ngoặc nhọn có thể trở thành mã đánh dấu (markup) nếu được chèn không đúng cách vào một trang web.
Các ứng dụng nên:
Giải mã không phải là làm sạch dữ liệu. Nó chỉ tiết lộ các ký tự được biểu diễn chứ không quyết định liệu chúng có an toàn cho HTML, đường dẫn tệp, truy vấn cơ sở dữ liệu hay chuyển hướng hay không.
Một URL có thể chứa từ khóa tìm kiếm, mã định danh tài liệu, địa chỉ email, mã lớp học, tên tệp, dữ liệu theo dõi và nhiều thông tin khác. Việc giải mã giúp thông tin này dễ đọc hơn nhưng không loại bỏ nó.
Không dán các liên kết trường học riêng tư, mã thông báo đặt lại mật khẩu, URL đã ký, địa chỉ hồ sơ học sinh hoặc dữ liệu xác thực vào một công cụ bên ngoài. Hãy thay thế các giá trị nhạy cảm bằng các ví dụ hư cấu trong quá trình dạy học và các buổi minh họa gỡ lỗi.
Trước khi chia sẻ ảnh chụp màn hình của một URL đã giải mã, hãy xóa tên tài khoản, máy chủ riêng tư, mã thông báo và mã định danh tài liệu.
Lập trình viên mới vào nghề nên ưu tiên sử dụng các API URL có cấu trúc. Trong JavaScript, một giá trị truy vấn có thể được kiểm tra như sau:
const url = new URL(
"https://example.edu/search?q=water%20cycle"
);
const query = url.searchParams.get("q");
console.log(query);
// water cycle
Cách tiếp cận này phân tích URL và trả về giá trị tham số đã giải mã. Nhìn chung, cách này an toàn và rõ ràng hơn so với việc tách thủ công toàn bộ chuỗi tại mỗi dấu hỏi, dấu và và dấu bằng.
Sử dụng Công Cụ Mã Hóa URL để chuẩn bị văn bản dùng làm thành phần URL, sau đó giải mã nó để kiểm chứng một ví dụ trong bài học.
Nếu dữ liệu đầu vào chứa các thực thể như &lt; hoặc &quot;, hãy sử dụng Công Cụ Giải Mã HTML. Đối với văn bản Base64 đã biết, hãy sử dụng Công Cụ Giải Mã Base64.
Việc chọn đúng công cụ giải mã giúp tránh các phép biến đổi không cần thiết và làm cho việc gỡ lỗi đáng tin cậy hơn.
Giải mã URL biến các chuỗi mã hóa phần trăm thành các ký tự dễ đọc. Nó giúp học sinh hiểu địa chỉ web, và giúp lập trình viên kiểm tra giá trị truy vấn, yêu cầu API, văn bản đa ngôn ngữ, chuyển hướng và các vấn đề mã hóa hai lần.
Phương pháp an toàn nhất là xác định thành phần URL, chỉ giải mã những gì cần thiết và giữ lại dữ liệu đầu vào gốc. Hãy coi kết quả là dữ liệu vẫn cần được xác thực.
Một liên kết đã giải mã dễ đọc sẽ dễ điều tra hơn, nhưng điều đó không tự động khiến nó an toàn hay chính xác. Hãy kiểm tra cấu trúc, địa chỉ đích, tham số, quyền riêng tư và bảng mã ký tự dự kiến trước khi sử dụng nó.