Я создаю рекордер на веб-сайте, который действует как прокси-сервер, чтобы протестировать веб-скребки на постоянной основе. Он разделен на три контейнера Docker, все на GNU/Linux: (1) прокси, (2) очередь API и запросов и (3) простое веб-приложение.
Он отлично работает для сайтов HTTP: я нажимаю кнопку в веб-приложении, это делает запрос в контейнер API и добавляет что-то во внутреннюю очередь запросов, которая затем запрашивает сайт через прокси-сервер. Прокси записывает сайт по мере его прохождения.
Однако я забыл, что нельзя отслеживать трафик сайта HTTPS, и теперь я пришел к этому, я обнаружил, что прокси используют только глагол CONNECT
, а затем действуют как обмен данных между клиента и цели. Я считаю, что не могу воспроизвести одни и те же фрагменты данных, поскольку часть шифрования использует рандомизированный симметричный ключ (однако у меня есть script, подходящий для тестирования, поэтому я сделаю это только для образовательной ценности!).
Итак, мне было интересно, может ли мой получающий клиент отдать достаточно секретов для прокси-системы для декодирования байтового потока? Я использую Wget для выполнения выборки, которая, я думаю, будет использовать OpenSSL. Однако не обязательно иметь Wget: если бы я использовал PHP script с file_get_contents
с контекстом потока, могу ли я задать модуль openssl для ключей дешифрования?
(Справедливости ради, я, вероятно, не решит проблему таким образом, даже если это возможно, я просто подумал, что было бы действительно интересно узнать немного больше о TLS. На практике я буду записывать "нулевое" значение, запись обо всех защищенных веб-сайтах в прокси-сервере и потребовать, чтобы запрашивающая служба уведомила прокси-данные о данных заголовка/тела с помощью вызова API, чтобы впоследствии его можно было воспроизвести. Конечно, у них будут текстовые копии этих элементов).