Использование Python для доступа к веб-ресурсам. JSON проблема? - PullRequest
2 голосов
/ 05 мая 2020

Я много пытался заставить это работать.

На веб-сайте есть CSV-ресурсы, которые я хочу загрузить и сохранить. Я могу сделать это с помощью firefox, но хочу автоматизировать процесс.

Примерно так:

headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

payload = { 'email': username, 'password': password}

with requests.Session() as s:
  p=s.post('https://isaacphysics.org/api/v2.10.4/api/auth/segue/authenticate', json=payload,headers=headers)
print(p.status_code)
webpage=s.get('https://isaacphysics.org/api/v2.10.4/api/assignments/assign/group/24684/progress/download' ,headers=headers) 

Пост-вызов возвращает статус 200, возвращает некоторые пользовательские данные, подтверждающие его работу, и создает необходимые файлы cookie, но 'get' не может пройти аутентификацию.

в firefox запрос выглядит так это:

Method: GET
URL: https://isaacphysics.org/api/v2.10.4/api/assignments/assign/group/25090/progress/download
Request Headers:
Host: isaacphysics.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: JSESSIONID=9g94t7JUNKJUNK3blif6bkx; isaacCookiesAccepted=1; SEGUE_AUTH_COOKIE="{\"currentUserId\":\"47878\",\"token\":\"0\",\"DATE_EXPIRES\":\"Tue May 12 13:41:48 +0000 2020\",\"HMAC\":\"Tr+eAeSQWU9JUNKJUNKJUNKJUNKJUNKJUNK2MQVrBQ=\"}"
Upgrade-Insecure-Requests: 1

и в python print(webpage.request.headers)

дает:

{'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*',
 'Connection': 'keep-alive', 
'Cookie': 'JSESSIONID=1jr9h3wJUNKJUNKJUNKrpfzx; SEGUE_AUTH_COOKIE="{currentUserId:47878,token:0,DATE_EXPIRES:Tue May 12 18:08:00 +0000 2020,HMAC:3LlaQTN/JUNKJUNKJUNKJUNKJUNKJUNKQW4mo=}"; isaacCookiesAccepted=1'}

Очевидная разница, кажется, в SEGUE_AUTH_COOK IE, потому что некоторые из escape-символы были опущены. Я пробовал несколько вещей, и если это проблема, я не могу понять, как ее исправить. Любая помощь очень ценится.

...