Công Cụ Giải Mã URL

Giải mã các URL đã mã hóa thành văn bản dễ đọc để kiểm tra liên kết, biểu mẫu web, tham số theo dõi và ví dụ bài học về web.

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ã.

Học Bảng mã URL

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.

  • Mật mã một giá trị trước khi thêm nó vào một chuỗi truy vấn hoặc đường dẫn.
  • @ info/ rich
  • Giải mã chỉ thành phần cụ thể mà bạn cần. Giải mã mù một địa chỉ URL có thể biến một ampersed mã hóa trở lại thành một bộ phân cách tham số.
  • Một mã hoá ký tự đa byte tới hơn một dãy %X được mong đợi, không phải lỗi.

URL chung Ký tự

Ký tựĐã mã hóaNơi nó được dùng
không gian%20Dấu tách từ bên trong một giá trị
!%21
"%22
#%23Khởi động các mảnh
%%25Bắt đầu chuỗi mã phần trăm
&%26Tham số truy vấn riêng
'%27
(%28
)%29
+%2BThường xuyên đọc là một khoảng trống bên trong một chuỗi truy vấn
,%2C
/%2FChia đoạn
:%3ATheo kế hoạch, ví dụ https:
;%3B
=%3DGán giá trị tham số truy vấn
?%3FChạy chuỗi truy vấn
@%40
[%5B
]%5D

Công cụ này có hữu ích với bạn không?

3.8/5 từ 48 đánh giá

Giải mã URL, tham số truy vấn, đường dẫn và dữ liệu web được mã hóa phần trăm phục vụ bài học, gỡ lỗi và kiểm thử API

Một học sinh chép địa chỉ trang web từ một biểu mẫu trực tuyến và thấy trong đó có đoạn chữ kiểu science%20project%20notes. Ở chỗ khác, một người mới học lập trình mở xem một yêu cầu gửi tới API thì phát hiện dấu và nằm trong giá trị tìm kiếm lại hiện ra thành %26. Địa chỉ vẫn chạy, nhưng vừa khó đọc vừa khó dò lỗi.

Công cụ giải mã URL đưa những chuỗi mã hóa bằng dấu phần trăm trở về đúng ký tự mà chúng đại diện. Chẳng hạn %20 thường trở lại thành một khoảng trắng, còn %26 thì thành dấu và.

Giải mã giúp bạn hiểu một đường dẫn, xem xét các tham số truy vấn, học cách web mã hóa dữ liệu và tìm nguyên nhân của những yêu cầu hỏng. Nhưng phải làm cẩn thận, vì các ký tự dành riêng sau khi giải mã có thể làm thay đổi luôn cấu trúc của địa chỉ.

Công cụ này không kết luận nơi đến là an toàn, là đúng hay là được phép. Nó chỉ đổi cách biểu diễn của những ký tự đã mã hóa. Phần máy chủ, đường dẫn, tham số và các giá trị vừa giải ra thì học sinh và người lập trình vẫn phải tự xem lấy.

Mã hóa URL trông ra sao

Địa chỉ web dùng một số ký tự nhất định để tách các phần của nó. Dấu hỏi có thể mở đầu chuỗi truy vấn, dấu và có thể ngăn cách các tham số, còn dấu thăng có thể đánh dấu một phần bên trong trang.

Khi một trong những ký tự ấy phải xuất hiện với tư cách dữ liệu chứ không phải dấu ngăn cách, người ta mã hóa nó bằng dấu phần trăm: sau dấu phần trăm là hai chữ số thập lục phân đại diện cho giá trị của một byte.

Giá trị đã mã hóa Ký tự sau khi giải Ý nghĩa thường gặp
%20 Khoảng trắng Ngăn cách các từ bên trong một giá trị
%21 ! Dấu chấm than
%23 # Dấu thăng hoặc dấu mở phần trong trang
%26 & Dấu và hoặc dấu ngăn cách tham số
%2B + Dấu cộng
%2F / Dấu gạch chéo hoặc dấu ngăn cách đường dẫn
%3A : Dấu hai chấm
%3D = Dấu bằng hoặc dấu ngăn cách tham số
%3F ? Dấu hỏi hoặc dấu mở truy vấn

Chữ cái thập lục phân trong các chuỗi phần trăm không phân biệt hoa thường, nên %2F%2f cùng đại diện cho một byte.

Giải mã một địa chỉ như thế nào

  1. Chép địa chỉ hoặc giá trị đã mã hóa. Giữ nguyên từng dấu phần trăm cùng cặp ký tự đi ngay sau nó.
  2. Xác định bạn đang xem phần nào. Nó là một địa chỉ đầy đủ, một đường dẫn, một tên tham số hay một giá trị tham số?
  3. Dán nó vào công cụ giải mã URL. Kiểm tra xem phần nhập vào đã được chép trọn vẹn chưa.
  4. Chạy phần giải mã. Công cụ sẽ chuyển những chuỗi phần trăm mà nó hỗ trợ.
  5. Đọc kết quả như đọc văn bản. Đừng mở ngay một nơi đến lạ khi chưa xem kỹ.
  6. So cấu trúc với dữ liệu. Để ý xem dấu hỏi, dấu và, dấu gạch chéo hay dấu bằng sau khi giải có làm địa chỉ trông khác đi không.
  7. Kiểm tra ký tự của các ngôn ngữ khác. Xác nhận rằng bảng mã ký tự đúng đã được dùng.
  8. Giữ lại phần nhập ban đầu. Bạn sẽ cần tới nó khi lần theo một lần mã hóa hai lớp hoặc một bước giải sai.

Hiểu các phần của một địa chỉ trước đã

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ó gồm:

  • Giao thức: https
  • Máy chủ: example.edu
  • Đường dẫn: /search
  • Truy vấn: q=water%20cycle&level=grade%206
  • Phần trong trang: results

Hai giá trị truy vấn giải ra thành “water cycle” và “grade 6”. Đừng lẫn dấu và mang tính cấu trúc, cái ngăn hai tham số với nhau, với một dấu và được mã hóa nằm bên trong một giá trị.

Giải đúng thành phần cần giải

Người lập trình hay tự chuốc lấy rắc rối khi giải mã cả địa chỉ trong lúc đáng ra chỉ cần giải một thành phần. Cùng một ký tự dành riêng, đứng ở mỗi chỗ lại giữ một vai khác.

Giả sử một truy vấn có nội dung:

?topic=research%26writing

Giá trị đã mã hóa ấy đại diện cho:

research&writing

Dấu và ở đây là một phần của giá trị chủ đề. Nếu đem giải cả truy vấn rồi phân tích sai, dấu và ấy dễ bị hiểu nhầm thành dấu ngăn cách mở ra một tham số mới.

Một ứng dụng đáng tin sẽ phân tích địa chỉ theo đúng cấu trúc của nó và giải từng thành phần bằng một giao diện lập trình dành riêng cho URL, chứ không thay chuỗi một cách tùy tiện.

Một buổi thực hành dò lỗi địa chỉ

Bước 1: Bắt đầu bằng một đường dẫn dễ đọc

Cả lớp cùng xem:

https://example.edu/library?topic=space%20science

Các em chỉ ra đâu là máy chủ, đâu là đường dẫn, đâu là tên tham số và đâu là giá trị đã mã hóa.

Bước 2: Chỉ giải phần giá trị

Giá trị space%20science trở thành space science. Học sinh giải thích vì sao người ta thường không viết thẳng một khoảng trắng vào địa chỉ đem chia sẻ cho người khác.

Bước 3: Đưa thêm ký tự dành riêng vào

Giáo viên đưa ra ví dụ:

?title=Design%20%26%20Technology

Tiêu đề sau khi giải là Design & Technology. Học sinh nhận ra dấu và đã mã hóa thuộc về tiêu đề chứ không ngăn cách tham số nào cả.

Bước 4: Làm ngược lại quá trình

Học sinh dùng công cụ mã hóa URL để chuẩn bị một giá trị mới, rồi giải mã nó và so lại kết quả.

Bước 5: Tìm ra chỗ sai

Một chuỗi có phần thoát phần trăm bị thiếu, kiểu như %2. Học sinh nói rõ vì sao sau dấu phần trăm phải có đủ hai chữ số thập lục phân.

Những tình huống có thật

1. Đọc tham số tìm kiếm

Một học sinh chép đường dẫn tìm kiếm trong thư viện, trong đó nhiều từ đã bị mã hóa. Địa chỉ hiện ra rất khó hiểu.

Em giải mã các giá trị truy vấn và xác nhận được những từ khóa cùng bộ lọc nào đã được dùng. Trước khi mở, em xem lại tên máy chủ.

Nhờ vậy em hiểu một trang web mang thông tin tìm kiếm từ trang này sang trang kia bằng cách nào.

2. Dò lỗi một yêu cầu gửi tới API

Một người mới học lập trình gửi đi một yêu cầu có tên khóa học chứa dấu và. Máy chủ nhận tên ấy thành hai tham số tách rời.

Mở yêu cầu gốc ra xem, người ấy thấy dấu và đã không được mã hóa như một phần dữ liệu. Giá trị được chuẩn bị lại bằng một giao diện URL chuẩn rồi thử lại.

Công cụ giải mã giúp hiểu yêu cầu đó, nhưng cách sửa lâu dài là xử lý địa chỉ theo cấu trúc chứ không phải thay chuỗi bằng tay.

3. Lần theo một đường dẫn hỏng

Một cô giáo nhận được đường dẫn tới tài liệu của lớp, nhưng nơi đến lại báo không tìm thấy tệp.

Địa chỉ được đem ra xem và giải mã. Hóa ra tên tệp có một dấu gạch chéo có thể bị hiểu thành dấu ngăn cách đường dẫn, hoặc một khoảng trắng chép sai.

Thay vì mò mẫm sửa một địa chỉ riêng tư mà mình không rành, cô xin người giữ tài liệu một đường dẫn chia sẻ mới.

4. Hiểu việc gửi biểu mẫu

Học sinh dựng một biểu mẫu tìm kiếm đơn giản rồi nhìn vào địa chỉ sau khi gửi đi một đoạn chữ có khoảng trắng và dấu câu.

Các em giải mã giá trị của từng tham số và đối chiếu với thứ mình đã gõ vào biểu mẫu. Cả lớp bàn vì sao trình duyệt phải mã hóa giá trị trước khi đặt vào địa chỉ.

Bài tập không dùng mật khẩu thật, hồ sơ học sinh hay câu trả lời riêng tư nào.

5. Xem lại đường dẫn có tham số thống kê

Đường dẫn trong bản tin của trường mang theo mấy tham số theo dõi. Cô giáo muốn biết trong đó có gì trước khi gửi đi.

Địa chỉ được tách ra thành từng tham số và các giá trị được giải mã. Những giá trị theo dõi không cần thiết chỉ nên bỏ đi nếu việc đó không làm hỏng nơi đến.

Đường dẫn cuối cùng phải được thử lại, chứ không mặc nhiên coi là vẫn chạy sau khi sửa tay.

6. Học cách mã hóa địa chỉ nhiều ngôn ngữ

Một lớp tin học thử đặt một câu ngắn không phải tiếng Anh vào địa chỉ. Kết quả mã hóa hiện ra nhiều chuỗi phần trăm liền nhau, vì ký tự UTF-8 có thể chiếm tới mấy byte.

Học sinh giải mã trọn chuỗi ấy rồi so với câu ban đầu. Bỏ đi một byte đã mã hóa là có thể sinh ra ký tự thay thế hoặc chữ vô nghĩa.

Hoạt động này cho thấy một ký tự nhìn thấy được không phải lúc nào cũng ứng với đúng một byte đã mã hóa.

7. Phát hiện mã hóa hai lớp

Một người lập trình chờ thấy khoảng trắng thì lại gặp %2520. Chuỗi %25 đại diện cho dấu phần trăm, nên giải một lượt sẽ ra %20, và giải thêm lượt nữa mới có thể ra khoảng trắng.

Người ấy lần ngược xem giá trị đã bị mã hóa hai lần ở đâu. Cần sửa là dòng chảy dữ liệu, chứ không phải giải đi giải lại mọi thứ nhập vào.

8. Kiểm tra nơi đến của chuyển hướng

Một đường dẫn giấu bên trong tham số kiểu redirect hay next một địa chỉ đã mã hóa khác.

Người dùng giải giá trị đó ra dạng văn bản thuần và xem tên máy chủ thật trước khi mở. Một địa chỉ đã mã hóa không đáng tin chỉ vì nơi đến cuối cùng của nó khó đọc.

Giải mã URL so với các công cụ giải mã khác

Dữ liệu vào Kiểu mã hóa có thể Công cụ đúng Ví dụ sau khi giải
lesson%20notes Mã hóa URL bằng dấu phần trăm Giải mã URL lesson notes
<p> Thực thể HTML Giải mã HTML <p>
SGVsbG8= Base64 Giải mã Base64 Hello
u003F Chuỗi thoát Unicode Bộ phân tích JSON hoặc của chính ngôn ngữ đó ?

Với các tham chiếu thực thể, hãy dùng công cụ giải mã HTML; còn công cụ giải mã Base64 thì chỉ dùng khi bạn biết chắc dữ liệu ở dạng đó.

Khoảng trắng và dấu cộng

Khoảng trắng thường được viết thành %20. Trong kiểu mã hóa truy vấn của biểu mẫu, dấu cộng cũng có thể được hiểu là một khoảng trắng.

Từ đó sinh ra một khác biệt đáng để ý:

  • class%20notes thường giải ra thành class notes.
  • class+notes có thể giải ra thành class notes trong ngữ cảnh truy vấn của biểu mẫu.
  • Còn một dấu cộng thật sự thì có khi phải mã hóa thành %2B.

Hãy dùng cách giải mã được làm ra cho đúng thành phần và đúng định dạng đó. Bộ giải đường dẫn và bộ giải truy vấn biểu mẫu chưa chắc đã đối xử với dấu cộng giống nhau.

Ký tự nhiều byte

Mã hóa phần trăm làm việc trên từng byte. Một ký tự nằm ngoài vùng ASCII cơ bản có thể được biểu diễn bằng nhiều byte đã mã hóa.

Chẳng hạn một chữ cái có dấu hoặc một ký tự Ả Rập có thể hiện ra thành cả dãy nhiều đoạn thoát phần trăm. Mọi byte cần thiết phải còn nguyên và đúng thứ tự, rồi được đọc bằng đúng bảng mã ký tự.

Nếu kết quả có những ký hiệu thay thế, hãy kiểm tra xem:

  • Có byte đã mã hóa nào bị thiếu không.
  • Chuỗi có bị giải bằng sai bảng mã ký tự không.
  • Đoạn chữ có bị chép thiếu không.
  • Giá trị có bị giải quá nhiều lần không.
  • Dữ liệu gốc có sẵn đã hỏng chưa.

Những việc công cụ này gỡ được

  • Một địa chỉ đầy những chuỗi phần trăm không đọc nổi.
  • Một học sinh cần xem lại các tham số tìm kiếm.
  • Giá trị truy vấn của một API có khoảng trắng hoặc dấu câu đã mã hóa.
  • Một đường dẫn được chia sẻ có vẻ đang giấu một nơi đến đã mã hóa khác.
  • Người lập trình nghi ngờ có mã hóa hai lớp.
  • Một buổi học lập trình cần mổ xẻ việc gửi biểu mẫu.
  • Một đường dẫn hoặc tham số nhiều ngôn ngữ đọc rất vất vả.
  • Một đường dẫn hỏng có thể chứa giá trị mã hóa sai.

Những lỗi hay gặp khi giải mã địa chỉ

Giải cả địa chỉ khi chưa hiểu nó

Sau khi giải, các ký tự dành riêng có thể làm đổi cấu trúc. Hãy tách địa chỉ ra thành từng thành phần rồi giải đúng giá trị mình cần.

Giải đi giải lại

Giải nhiều lượt có thể biến dữ liệu vốn vô hại thành dấu ngăn cách thật sự hoặc thành đường dẫn ngoài dự tính. Hãy tìm hiểu vì sao lại có nhiều lớp mã hóa như vậy.

Tìm và thay bằng tay

Thay %20 bằng khoảng trắng không xử lý được hết các ký tự đã mã hóa, các chuỗi UTF-8, phần nhập hỏng hay quy tắc của dấu cộng. Trong mã nguồn, hãy dùng một bộ phân tích địa chỉ đàng hoàng hoặc một giao diện chuẩn.

Mở một nơi đến lạ vừa giải ra

Giải nó ra dạng văn bản trước đã. Xem giao thức, tên máy chủ, đường dẫn và tham số rồi mới quyết định có vào hay không.

Lẫn mã hóa URL với mã hóa HTML

%26& đều có thể đại diện cho dấu và, mỗi cái trong ngữ cảnh riêng. Hãy chọn công cụ giải theo đúng cách biểu diễn đang có trước mặt.

Bỏ qua các chuỗi phần trăm không hợp lệ

Sau dấu phần trăm phải là hai chữ số thập lục phân. Chuỗi thiếu hoặc sai thường là dấu hiệu phần nhập đã hỏng.

Đưa mật khẩu vào địa chỉ

Địa chỉ web có thể nằm lại trong lịch sử trình duyệt, nhật ký, số liệu thống kê, ảnh chụp màn hình và tin nhắn chuyển tay. Thông tin đăng nhập nhạy cảm không nên đặt vào chuỗi truy vấn.

Mấy điều cần lưu ý về an toàn

Giá trị vừa giải ra có thể chứa những ký tự mang ý nghĩa riêng. Một dấu gạch chéo đã giải có thể ảnh hưởng tới đường dẫn, một dấu và có thể làm đổi tham số, còn các dấu ngoặc nhọn có thể biến thành thẻ đánh dấu nếu bị đặt sai chỗ trong trang.

Ứng dụng nên:

  • Phân tích địa chỉ bằng các giao diện URL chuẩn.
  • Chỉ giải đúng thành phần cần giải.
  • Kiểm tra tên và giá trị tham số có đúng như dự kiến không.
  • Giới hạn những nơi được phép chuyển hướng tới.
  • Không dựng câu lệnh cơ sở dữ liệu hay lệnh hệ thống từ dữ liệu chưa tin được.
  • Thoát dữ liệu đầu ra theo đúng ngữ cảnh hiển thị.
  • Từ chối các chuỗi hỏng khi cần.
  • Ghi lại lỗi mà không để lộ dữ liệu nhạy cảm.

Giải mã không phải là làm sạch dữ liệu. Nó cho thấy các ký tự đang được biểu diễn, nhưng không quyết định chúng có an toàn cho HTML, cho đường dẫn tệp, cho câu lệnh cơ sở dữ liệu hay cho chuyển hướng hay không.

Riêng tư và cách dùng có trách nhiệm

Một địa chỉ web có thể mang theo từ khóa tìm kiếm, mã tài liệu, địa chỉ thư điện tử, mã lớp, tên tệp, dữ liệu theo dõi và nhiều thứ khác. Giải mã chỉ làm những thứ ấy dễ đọc hơn chứ không hề bỏ chúng đi.

Đừng dán vào công cụ bên ngoài những đường dẫn nội bộ của trường, mã đặt lại mật khẩu, địa chỉ đã ký, đường dẫn tới hồ sơ học sinh hay dữ liệu đăng nhập. Khi dạy và khi trình bày cách dò lỗi, hãy thay giá trị nhạy cảm bằng ví dụ bịa ra.

Trước khi chia sẻ ảnh chụp màn hình của một địa chỉ đã giải, hãy xóa tên tài khoản, tên máy chủ nội bộ, các mã thông báo và mã tài liệu.

Một ví dụ thực tế cho người lập trình

Người mới học nên ưu tiên các giao diện xử lý địa chỉ có sẵn. Trong JavaScript, có thể xem giá trị của một truy vấn 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 này phân tích địa chỉ và trả về giá trị tham số đã giải sẵn. Nhìn chung nó an toàn hơn và sáng sủa hơn việc tự tay cắt cả chuỗi tại từng dấu hỏi, dấu và, dấu bằng.

Danh sách kiểm tra cuối cùng

  • Phần nhập đã mã hóa ban đầu đã được giữ lại.
  • Đã xác định rõ thành phần nào của địa chỉ đang được giải.
  • Các chuỗi phần trăm đều có đủ hai chữ số thập lục phân hợp lệ.
  • Dấu cộng đã được hiểu theo đúng ngữ cảnh.
  • Ký tự nhiều byte hiển thị đúng.
  • Máy chủ và nơi đến sau khi giải đã được xem trước khi mở.
  • Các ký tự dành riêng không vô tình làm đổi cấu trúc đã định.
  • Chuyện mã hóa hai lớp được lần ra chứ không phải đoán mò.
  • Không để lộ mật khẩu, mã thông báo hay hồ sơ học sinh nào.
  • Mã của ứng dụng dùng giao diện URL có cấu trúc ở những chỗ có thể.

Công cụ liên quan

Dùng công cụ mã hóa URL để chuẩn bị một đoạn chữ thành thành phần của địa chỉ, rồi giải mã lại để kiểm chứng một ví dụ trên lớp.

Nếu phần nhập có các thực thể kiểu < hay ", hãy dùng công cụ giải mã HTML. Còn với đoạn chữ đã biết chắc là Base64 thì có công cụ giải mã Base64.

Chọn đúng công cụ giải sẽ tránh được những lần biến đổi thừa và khiến việc dò lỗi đáng tin hơn hẳn.

Đôi lời cuối

Giải mã URL biến những chuỗi mã hóa bằng dấu phần trăm thành ký tự đọc được. Nó giúp học sinh hiểu địa chỉ web, và giúp người lập trình xem xét giá trị truy vấn, yêu cầu gửi tới API, chữ nhiều ngôn ngữ, chuyển hướng và những rắc rối do mã hóa hai lớp.

Cách an toàn nhất là xác định thành phần của địa chỉ, chỉ giải đúng phần cần giải, và giữ lại phần nhập ban đầu. Hãy coi kết quả là dữ liệu vẫn còn phải kiểm tra.

Một đường dẫn đã giải ra và dễ đọc thì dễ tìm hiểu hơn, nhưng không vì thế mà nó tự nhiên an toàn hay đúng đắn. Hãy xem lại cấu trúc, nơi đến, tham số, khía cạnh riêng tư và bảng mã ký tự đã định của nó trước khi dùng.

Dành cho giáo viênDành cho học sinh