Как войти с помощью oauth в стороннее приложение с помощью python

#python #oauth #requests-oauthlib

Вопрос:

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

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

После аутентификации веб-странице требуется только файл cookie с именем SID (идентификатор сеанса, я бы предположил), чтобы ответить как аутентифицированный пользователь. Там нет токена на предъявителя, только файл cookie SID.

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

Ответ №1:

(Не могу прокомментировать из-за представителя)

Да, то, о чем вы просите, возможно. Теоретически вы могли бы выполнить и сопоставить все запросы для успешной аутентификации, чтобы получить SID и выполнить очистку, хотя это было бы очень сложной задачей для некоторых базовых веб-очисток, это похоже на программирование полномасштабного научного калькулятора для выполнения 5 5. То, о чем вы просите, — этодействительно сложная задача, вы столкнетесь со всевозможными проблемами безопасности, и вас попросят подтвердить телефон/приложение-аутентификатор/электронную почту при попытке войти в свою учетную запись с помощью запросов Python, а затем вам нужно будет отслеживать эти файлы cookie безопасности и обновлять их, это настоящий беспорядок и будет чрезвычайно сложно для всех.

Я думаю, что лучшим методом было бы вручную аутентифицировать себя и получить файл SID cookie и жесткий код, который будет помещен в ваш скребок в заголовке cookie HTTP.

Я понимаю, что это вызывает беспокойство о том, что делать, когда срок действия файла cookie SID истекает. Поскольку вы не указали сайт, мне было бы трудно представить сайт, который заставляет вас часто проходить аутентификацию в Google, вместо того, чтобы иметь собственную внутреннюю систему обновления SID/JWT, чтобы вы могли войти в систему.

Мои рекомендации были бы:

  • Проверьте срок действия файла cookie SID, если возможно вручную скопировать и вставить его после аутентификации, сделайте это.
  • Если СВДС истекает в ближайшее время, проверьте, есть ли запрос API в любом месте, чтобы получить себе новый Sid (без прохождения через протокол OAuth снова), в сетевой панели искать set-cookie в заголовке ответа установив новый Sid, возможно, потребуется изменить и отслеживать их внутри вашей программы, но это будет гораздо легче, чем написать программу для входа в Google.
  • Если нет возможности обновить SID, и срок их действия часто истекает, и вам нужно выполнять долгосрочную очистку веб-страниц, и сидеть там, получая новый файл cookie вручную каждые 30 минут, недостаточно, я бы рекомендовал изучить возможность сделать это с помощью Puppeteer/Chromium, так как это будет намного проще, чем делать это с помощью HTTP-запросов Python.

Комментарии:

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

2. Я понимаю. Удачи вам с вашим заданием!