Формат заголовков HTTP с использованием запросов Python - PullRequest
0 голосов
/ 09 мая 2019

Я использую запросы Python для захвата http заголовков сайта.Например, это заголовок ответа:

{'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'cache-control': 'max-age = 600 ',' Content-Type ':' text / html;charset = utf-8 ',' Expires ':' Fri, 19 Apr 2019 03:16:28 GMT ',' Via ':' 1.1 лак, 1.1 лак ',' X-ESI ':' on ',' Verso ': 'false', 'Accept-Ranges': 'none', 'Date': 'Fri, 19 Apr 2019 03:11:12 GMT', 'Age': '283', 'Set-Cookie': 'CN_xid =08f66bff-4001-4173-b4e2-71ac31bb58d7;Истекает = ср, 16 октября 2019 г. 03:11:12 по Гринвичу;путь = / ;, xid1 = 1;Истекает = Пт, 19 апреля 2019 03:11:27 GMT;путь = / ;, verso_bucket = 281;Истекает = Сб, 18 апреля 2020 03:11:12 GMT;путь = /; ',' X-Served-By ':' cache-iad2133-IAD, cache-gru17122-GRU ',' X-Cache ':' HIT, MISS ',' X-Cache-Hits ':' 1, 0 ',' X-Timer ':' S1555643472.999490, VS0, VE302 ',' Content-Security-Policy ': "default-src https: data:' unsafe-inline '' unsafe-eval '; child-srchttps: data: blob :; connect-src https: data: blob :; font-src https: data :; img-src https: data: blob :; media-src https: data: blob :; object-src https:; script-src https: data: blob: 'unsafe-inline' 'unsafe-eval'; style-src https: 'unsafe-inline'; block-all-mixed-content; запросы на обновление-небезопасные запросы; report-uri https://l.com/csp/gq", 'X-Fastly-Device-Detect': 'desktop', 'Strict-Transport-Security': 'max-age = 7776000; предварительная загрузка', 'Vary': 'Accept-Encoding, Verso, Accept-Кодировка ',' content-encoding ':' gzip ',' Transfer-Encoding ':' chunked '}

Я заметил, что из нескольких протестированных мной примеров заголовки, которые я получаю от requests:отформатированный как 'key':'value' (обратите внимание на одиночные двоеточия, окружающие ключ и значение). Однако, когда я проверяю заголовки fВ Firefox-> Веб-разработчик -> Инспектор и выберите просмотр заголовка в необработанном формате, я не вижу запятых:

HTTP / 2.0 200 OK дата: чт, 09 мая 2019 г. 18:49:07 GMT истекает: -1 контроль кеша: приватный, max-age = 0 тип контента: text / html;charset = UTF-8 строгая транспортная безопасность: max-age = 31536000 кодировка контента: br сервер: gws длина контента: 55844 x-xss-protection: 0 x-frame-options: SAMEORIGIN set-cookie: 1P_JAR = 2019-05-09-18;истекает = суббота, 08 июня 2019 18:49:07 по Гринвичу;Путь = /;домен = .google.com alt-svc: quic = ": 443";ма = 2592000;v = "46,44,43,39" X-Firefox-Spdy: h2

Мне нужно знать: всегда ли модуль Python requests добавляет одиночные двоеточия?Это важно для меня, так как мне нужно включить / исключить их в моем регулярном выражении, которое используется для анализа заголовков.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Это не модуль запросов, который добавляет двоеточия. Запрос представляет заголовки как диктовку, но вы, похоже, рассматриваете их как строку. Когда Python преобразует слова в строки, они получают двоеточия, запятые и кавычки.

Правильное решение для вашей программы - это, вероятно, рассматривать словарь как словарь, а не преобразовывать его в строку. Но если вам действительно нужны заголовки в строковой форме, вам следует рассмотреть возможность использования другого инструмента, такого как curl.

0 голосов
/ 09 мая 2019

Проблема, с которой, я думаю, вы столкнулись, заключается в том, что запрос возвращается как dict вместо значения, которое выдает инспектор Firefox.Когда вы делаете это, вы можете получить смешанные результаты, если одна из пар значений имеет числовое или логическое значение, поэтому при выполнении регулярного выражения вы можете использовать Try / Except, если вы можете удалить внешние апострофы или просто использовать данное значение.

...