Рубрики
Без рубрики

[Сбор] Методы декодирования URL

Кодировка URL-адреса «- это метод кодирования информации в едином идентификаторе ресурса (URI)». Он также называется процентами кодирования, поскольку процентные символы используются для кодирования определенных зарезервированных символов:! # $% & ‘() * +, / :; =? @ []% 21% 23% 24% 25% 26% 27% 28% 29% 2A% 2B% 2C% 2f% 3A% 3B% 3D% 3F % 40% 5b% 5d Эта статья собирает различные способы декодировать строку кодированной URL. Давайте начнем! Python 2 $ plias urldecode = ‘python -c “Импорт sys, Urllib ul; … [Коллекция] Методы декодирования URL Подробнее»

Автор оригинала: Pythonista.

URL кодировка «Это метод для encode информация в едином идентификаторе ресурса (Ури) “ . Это также называется Процентное кодирование Поскольку процентные символы используются для кодирования определенных зарезервированных символов:

! # $ % & ( ) * + / : ; = ? @ [ ]
%21 %23 %24 %25 %26 %27 %28 %29 % 2А % 2b. % 2c. % 2f. % 3А % 3B. % 3D % 3f. %40 % 5b. % 5d.

Эта статья собирает различные способы декодировать URL кодированная строка. Давайте начнем!

Python 2.

$ alias urldecode='python -c "import sys, urllib as ul; \
    print ul.unquote_plus(sys.argv[1])"'

$ alias urlencode='python -c "import sys, urllib as ul; \
    print ul.quote_plus(sys.argv[1])"'

Источник

Вот пример использования:

$ urldecode 'q+werty%3D%2F%3B'
q werty=/;

$ urlencode 'q werty=/;'
q+werty%3D%2F%3B

Python 3.

$ alias urldecode='python3 -c "import sys, urllib.parse as ul; \
    print(ul.unquote_plus(sys.argv[1]))"'

$ alias urlencode='python3 -c "import sys, urllib.parse as ul; \
    print (ul.quote_plus(sys.argv[1]))"'

Вот пример использования:

$ urldecode 'q+werty%3D%2F%3B'
q werty=/;

$ urlencode 'q werty=/;'
q+werty%3D%2F%3B

Источник

север

$ sed 's@+@ @g;s@%@\\x@g' file | xargs -0 printf "%b"

Источник

САД с эхо -Е

$ sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' file | xargs echo -e

Источник

САД с псевдонимом

Для удобства вы можете использовать псевдоним:

$ alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'

Если вы хотите декодировать, теперь вы можете просто использовать:

$ echo "http%3A%2F%2Fwww" | urldecode
http://www

Источник

Башмак

input="http%3A%2F%2Fwww"
decoded=$(printf '%b' "${input//%/\\x}")

Источник

Правильно обрабатывать плюсы ( + ), замените их пробелами, используя Sed :

decoded=$(input=${input//+/ }; printf "${input//%/\\x}")

Bash + URLENCODE () + URLDECODE () ФУНКЦИИ

urlencode() {
    # urlencode 
    local length="${#1}"
    for (( i = 0; i < length; i++ )); do
        local c="${1:i:1}"
        case $c in
            [a-zA-Z0-9.~_-]) printf "$c" ;;
            *) printf '%%%02X' "'$c" ;;
        esac
    done
}

urldecode() {
    # urldecode 

    local url_encoded="${1//+/ }"
    printf '%b' "${url_encoded//%/\\x}"
}

Источники:

bash + xxd.

urlencode() {
  local length="${#1}"
  for (( i = 0; i < length; i++ )); do
    local c="${1:i:1}"
    case $c in
      [a-zA-Z0-9.~_-]) printf "$c" ;;
    *) printf "$c" | xxd -p -c1 | while read x;do printf "%%%s" "$x";done
  esac
done
}

Источники:

Папирофон

$ echo oil+and+gas | php -r 'echo urldecode(fgets(STDIN));' // Or: php://stdin
oil and gas

Источник

PHP Библиотека

php -r 'echo urldecode("oil+and+gas");'

Источник

Перл

decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' "$encoded_url")

Источник

Perl для обработки файла

perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file

Источник

awk

awk -niord '{printf RT?$0chr("0x"substr(RT,2)):$0}' RS=%..

Источники:

Python 2 Urllib.unquote.

Urllib.unquote Это специальная функция в встроенной стандартной библиотеке Python урлыб это делает то, что вам нужно:

decoded_url=$(python2 -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' "$encoded_url")

Вы также можете использовать его, чтобы изменить файл:

python2 -c 'import sys, urllib; print urllib.unquote(sys.stdin.read())' file.new &&
mv -f file.new file

Источник: https://unix.stackexchange.com/questions/159253/decoding-url-encoding-percent-encoding

Python 3 Urllib.parse.unquote.

Если вы запустите Python 3 в вашей системе (например, большинство людей), используйте альтернативную функцию Urllib.parse.unquote Отказ Чтобы проверить вашу версию, посетите Эта статья Отказ

decoded_url=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))' "$encoded_url")

Опять же, вы можете использовать функцию для обработки файла следующим образом:

python3 -c 'import sys, urllib; print(urllib.parse.unquote(sys.stdin.read()))' file.new &&
mv -f file.new file

Источник: https://unix.stackexchange.com/questions/159253/decoding-url-encoding-percent-encoding

Perl Uri:: Escape

URI:: Escape Решает проблему декодирования URL для пользователей Perl.

decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' "$encoded_url")

Вы можете использовать функцию для обработки файла следующим образом:

perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file

Источник: https://unix.stackexchange.com/questions/159253/decoding-url-encoding-percent-encoding

Perl одноклассник без установки модулей

$ perl -pe 's/\%(\w\w)/chr hex $1/ge'

Вот пример использования:

$ echo '%21%22' |  perl -pe 's/\%(\w\w)/chr hex $1/ge'
!"

Источник: https://unix.stackexchange.com/questions/159253/decoding-url-encoding-percent-encoding

Bash Regex.

$ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }

Теперь вы можете использовать функцию как такую команду:

$ urldecode https%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3Durldecode%2Bbash
https://google.com/search?q=urldecode+bash

Если вам нужно назначить некоторые переменные, используйте эту стратегию:

$ x="http%3A%2F%2Fstackoverflow.com%2Fsearch%3Fq%3Durldecode%2Bbash"
$ y=$(urldecode "$x")
$ echo "$y"
http://stackoverflow.com/search?q=urldecode+bash

Источник: https://stackoverflow.com/questions/6250698/how-to-decode-url-encoded-string-in-shell

GNU awk.

#!/usr/bin/awk -fn
@include "ord"
BEGIN {
   RS = "%.."
}
{
   printf "%s", $0
   if (RT != "") {
      printf "%s", chr("0x" substr(RT, 2)) 
   }
}

Источник: https://stackoverflow.com/questions/6250698/how-to-decode-url-encoded-string-in-shell

использованная литература

Оригинал: “https://blog.finxter.com/url-decoding-methods/”