LINUX.ORG.RU

python, requests.post vs requests.session

 ,


0

1

Привет.

Хочу авторизоваться на веб-морде Weblogic (послать логин, пароль) — получить куки, а далее уже запрашивать другие страницы.

В чём разница между session и не session?

Вот этот код работает, куки получаются:

#!/usr/bin/python3
import requests
data={'j_username':'weblogic', 'j_password':'11111111', 'j_character_encoding': 'UTF-8'}

session=requests.Session()
session.post('http://192.168.1.41:7001/console/j_security_check', data=data)
print(session.cookies.keys())

а вот этот код уже не работает:

#!/usr/bin/python3
import requests
data={'j_username':'weblogic', 'j_password':'11111111', 'j_character_encoding': 'UTF-8'}

b=requests.post('http://192.168.1.41:7001/console/j_security_check', data=data)
print(b.cookies.keys())

Оба скрипта проходят авторизацию, но во втором случае в ответе нет кукисов.

В чём принципиальная разница? Как получить куки, не использую session?

Для чего мне всё это: просто интересно. Для образовательных целей.

Спасибо.

★★★

Последнее исправление: iljuase (всего исправлений: 2)

Оба скрипта проходят авторизацию, но во втором случае в ответе нет кукисов.
В чём принципиальная разница?

ты не поверишь...

http://docs.python-requests.org/en/master/api/#request-sessions

Provides cookie persistence, connection-pooling, and configuration.

Как получить куки, не использую session?

вручную получить их из ответа на авторизацию, вручную добавлять к другим запросам

router ★★★★★
()
Ответ на: комментарий от router

вручную получить их из ответа на авторизацию, вручную добавлять к другим запросам

В это-то и вопрос. Я и пытаюсь, но куков нет:

#!/usr/bin/python3
import requests
data={'j_username':'weblogic', 'j_password':'11111111', 'j_character_encoding': 'UTF-8'}

b=requests.post('http://192.168.1.41:7001/console/j_security_check', data=data)
print(b.cookies.keys())

Что не так?

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

Предполагаю примерно такую схему

  1. requests отправляет запрос
    GET / HTTP/1.1
    Host: example.com
    
  2. Сервер отвечает
    HTTP/1.1 302 Found
    Location: /asd
    Set-Cookie: x=1
    Content-Length: 0
    
  3. requests отправляет еще запрос
    GET /asd HTTP/1.1
    Host: example.com
    Cookie: x=1
    
  4. Сервер отвечает
    HTTP/1.1 200 OK
    Content-Type: text/plain
    Content-Length: 6
    
    blabla
    
  5. и вот этот Response и возвращается тебе. Как видишь, в нем действительно нет куков, а куки из первого ответа никуда не сохранились, т. к. не было сессии.
deadNightTiger ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.