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

Спонсированная работа на Urllib3

Резюме работы для Gitcyin Gitcoin Urllib3. Теги с Python, Devjournal.

URLLIB3 – популярная библиотека клиента HTTP в Python, для которой я был сопровождающим в течение последних 2 лет. Несколько месяцев назад были поддержаны сопровождающие Urllib3 Gitcoin с Грант возможности Для финансируемой работы на Urllib3. В этом посту я буду документировать работу, которую я закончил в результате этого гранта.

Квентин Прадет Также писал о своем опыте работы по тому же гранту. Проверьте свой блог здесь Отказ 🎉

Я сосредоточил свои усилия по развитию на URL-анализате Urllib3, который был недавно обновлен для совместимого на RFC 3986 с RFC3986 упаковка.

Оказывается, что пакет слишком тяжелый для платформ с меньшим количеством процессорных процессоров и ресурсов памяти, таких как Raspberry Pi, и время импорта пострадали из-за количества регулярных разборки экспрессии в пределах RFC3986 Отказ Эффекты, вызванные Urllib3 взять 800 мс для импорта вместо 250 мс Отказ

Я читаю RFC и с выяснением, какие компоненты пакета нам нужны, и повторно реализовали их проще, и с меньшими сложными регулярными выражениями, чтобы избежать дорогой компиляции, по-прежнему поддерживая уровень правильности, необходимого для обеспечения безопасного анализатора URL Отказ

Оказывается, нам не нужно строго разбирать имя пользователя , пароль , путь , запрос или Фрагмент Компоненты, вместо этого мы разделяемся на разделителях компонентов, а затем проценты кодируют все недопустимые символы в компоненте, поскольку все вышеуказанные компоненты принимают процентные закодированные значения.

В основном единственные компоненты, которые мы строго разбираем, являются схема, хост и порт. Все остальные компоненты, которые мы принимаем символы, которые передаются в Urllib3 и процента, кодируют их, чтобы избежать атак CRLF-впрыскивания и атак на основе Unicode, которые первоначально употребляют разработку анализатора URL-анализатора RFC 3986 для URLLIB3.

Это позволяет нам продолжать поддерживать «технически» неправильные URL-адреса безопасным способом, что приводит к лучшему удобству использования, пока все еще безопасны. К сожалению, хозяин Компонент является самым сложным и до сих пор нужна некоторая работа для меня, чтобы быть полностью счастливыми с этим.

Второе незначительное открытие, которое я сделал, это то, что наши ConnectionPool.request () Метод не применял одну и ту же диабаусную логию URL, как верхний уровень Poolmanager.request () И так будет несовместимо. Я добавил логику в ConnectionPool.request () для относительных URL.

Список запросов по тяги в результате гранта:

Работа, которую я сделал в результате этого гранта, вдохновил меня начать работу над анализатором URL под названием IRL Специально нацелены на простоту, правильность, удобство использования и интерфейс, который поддается использование клиентов HTTP.

Я хотел бы поблагодарить всех, кто пожертвовал средства в Gitcoin для поддержки моей работы по этому гранту. ❤ ️

Оригинал: “https://dev.to/sethmlarson/sponsored-work-on-urllib3-5aip”