Python просит |Как оставаться в системе на сеансе? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу войти на сайт и оставаться на этом сайте, чтобы загрузить какой-нибудь файл.Загрузка этих файлов невозможна без входа в систему. Как я могу доказать веб-сайту, что я вошел в систему для других запросов?Вот код, который я пробовал:

url = myurl.loginUrl

with requests.Session() as s:

  r = s.get(url,auth=(account_info.username,account_info.password))
  cookie = r.cookies
  headers = {
      'Accept': 'application/json',
      'Girder-OTP': cookie["girderToken"],
  }

  url = myurl.mainPage
  r = s.get(url, headers=headers, cookies=cookie)
  cookie = r.cookies
  print(r.status_code)

Этот код "r.status_code" возвращает мне 200, что означает, что я вошел в систему. Однако, когда я пытаюсь загрузить файлы с другого URL:

  url = myurl.downloadUrl
  r = s.get(url,cookies=cookie)
  print(r.status_code)

Этот возвращает мне 401, что показывает, что я не авторизован.Я искал другие подобные вопросы, но они мне не помогли.

1 Ответ

0 голосов
/ 01 декабря 2018

Вам не нужно добавлять cookie каждый раз, кроме того, r.cookies может быть Нет, потому что веб-сайт считает, что он не должен изменять ваш cookie, поэтому это может быть причиной, по которой вы не получили доступ.И один момент, который вы должны знать, requests.Session() автоматически поделится cookie.

import requests

with requests.Session() as se:
    se.get("http://github.com")
    print(se.cookies)

На самом деле вы можете сохранить ваш cookie в файл при выходе из скрипта.Так что вам просто нужно загрузить куки из файла, а не войти снова.Но вам нужно обновить cookie до истечения срока действия.

...