2015-01-06 6 views
0

Как реализовать эту команду curl в python Запросы или urllib2 или даже pycurl? Я просмотрел множество примеров в stackoverflow и других местах, которые приближаются к тому, что я ищу, но ни один из них не показывает пример, который использует как имя пользователя/пароль, так и токен для аутентификации (двухфакторная аутентификация). Я пытаюсь войти на сайт, используя двухфакторную аутентификацию, а затем использовать файлы cookie для json-данных.
Итак, у меня есть форма для входа в систему, которая требует публикации «urserId», «password» и «token» (я считаю, что на сайте используется токен Google Authenticator). Вот работающие команды curl, которые делают то, что мне нужно, я хотел бы перевести то, что эти две команды делают для python.Как реализовать эту команду curl в python Запросы или urllib2 или даже pycurl?

curl -X POST -H "Accept: Application/json" -H "Content-Type: application/json" http://example.com/rest/auth/login -d '{"userId":"myuserid", "password":"mypa$$word", "token":"321"}' 

curl http://example.com/rest/search?q=e43f6f3bd6a0f0c0415accfh285f6a00b55552666b7s --cookie 'connect.sid=s%3BJAUAVY68925VclAlLZCV.Gy902343-x%20343seMBMsQodfdo-35' 

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

К сожалению, это приводит к реагированию [400], который говорит мне, что я не использую учетные данные правильно.

ответ

0

От requestsdocs:

Есть много раз, что вы хотите, чтобы отправить данные, которые не образуют кодированные. Если вы передадите string вместо dict, эти данные будут опубликованы напрямую.

то, что вы расклеивали не application/json, но (я предполагаю) application/x-www-form-urlencoded, и ваши заголовки запроса врут :)

Попробуйте с data=json.dumps(payload).