Python-запросы (>= 1.*):Как отключить поддержку активности?

StackOverflow https://stackoverflow.com//questions/21008953

Вопрос

Я пытаюсь запрограммировать простой веб-сканер с использованием модуля Requests, и мне хотелось бы знать, как отключить его функцию поддержания активности по умолчанию.

Я попробовал использовать:

s = requests.session()
s.config['keep_alive'] = False

Однако я получаю сообщение об ошибке, в котором говорится, что объект сеанса не имеет атрибута «config». Я думаю, что он был изменен в новой версии, но я не могу найти, как это сделать в официальной документации.

Правда в том, что когда я запускаю сканер на определенном веб-сайте, он получает максимум пять страниц, а затем продолжает циклически повторяться, поэтому я подумал, что это как-то связано с функцией поддержания активности!

ПС:Является ли Requests хорошим модулем для веб-сканера?есть что-то более адаптированное?

Спасибо !

Это было полезно?

Решение

Это работает

s = requests.session()
s.keep_alive = False
.

Отвечено в комментарии аналогичного вопроса.

Другие советы

Я не уверен, но вы можете попробовать пропустить передачу {"соединения": «Закрыть»} в качестве заголовков HTTP при отправке запроса на получение запросов.Это закроет соединение, как только сервер возвращает ответ.

>>> headers = {"Connection": "close"}
>>> r = requests.get('https://example.xcom', headers=headers)
.

Как предположил @praveen, от нас ожидается использование HTTP/1.1 заголовок Connection: close чтобы уведомить сервер о том, что соединение следует закрыть после завершения ответа.

Вот как это описано в РФК 2616:

HTTP/1.1 определяет опцию «закрыть» соединения, позволяющую отправителю сигнализировать о том, что соединение будет закрыто после завершения ответа.Например,

Connection: close

в полях заголовка запроса или ответа указывает, что соединение НЕ ДОЛЖНО считаться «постоянным» (раздел 8.1) после завершения текущего запроса/ответа.

Приложения HTTP/1.1, которые не поддерживают постоянные соединения, ДОЛЖНЫ включать опцию «закрыть» соединение в каждое сообщение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top