Как собрать содержимое адресной строки браузера в C / C ++? - PullRequest
0 голосов
/ 09 июля 2020

Обзор

Я использую sh для сбора содержимого адресной строки браузера, открытого функцией в программе на C / C ++. Здесь есть несколько тем, которые обсуждают этот вопрос. Однако ни один из них не кажется мне полезным.

Моя среда

ОС: Windows 7, Windows 10. Язык разработки: C / C ++

Мой проект

Я пишу приложение, в котором мне нужно собирать данные с сервера. Сервер требует от клиента аутентификации и использует для этого двухэтапный протокол OAuth 2.0 . Мне нужно использовать веб-API, разработанный третьей стороной.

На следующей странице описан весь процесс.

https://apidocs.getresponse.com/v3/case-study/oauth2-authorization-code

Однако у меня проблема только с первым шагом: получить код авторизации с сервера.

Выделение на этой странице объясняет процесс первого шага, единственного, который здесь имеет значение:

image

Want to see by yourself ? Try this.

I have created an account and registered a bogus app on getresponse.com for testing purpose.

После перенаправления на сайт example.com , следующий экран показывает следующее в адресной строке:

http://example.com/receiver?code=<code>&state=xyz

Этот код в адресной строке - именно то, что мне нужно, чтобы продолжить второй этап аутентификации, когда эта страница отображается в браузере. Следовательно, необходимо собрать данные, содержащиеся в адресной строке.

  • Вы можете повторить операцию и снова перейти к тому же URL-адресу: вам не нужно будет снова входить в систему и вы получите другой код авторизации.

(Примечание: для тестирования протокола Oauth 2.0 на getresponse.com я создал приложение 9 июля 2020 года. Этот аккаунт имеет срок действия 30 дней. Поэтому учетные данные, упомянутые выше, вероятно, истекут через месяц после даты создания.)

То, что я пробовал до сих пор

Я не буду go в подробности или этот пост может стать слишком длинным. Но я пробовал множество запросов curl GET с разными параметрами. Не повезло: я никогда не получаю данные адресной строки браузера с кодом взамен.

Может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 10 июля 2020

Вот список способов, которыми вы можете sh выполнить вашу задачу:

  • Hook функция, которая изменяет текст адресной строки в браузере . Это может быть достигнуто с помощью удаленной инъекции DLL / кода и передачи результатов в ваш основной процесс с помощью других методов межпроцессного взаимодействия

  • Получите адрес памяти буфера, содержащего текст адресной строки (сканеры памяти, такие как CE ), затем активно просканируйте изменения в этом адресе для желаемого текста, который в данном случае равен code=

  • Создайте расширение браузера, которое прослушивает события изменения URL-адреса на вкладках и отправляет результаты обратно вашему процессу, предпочтительно с использованием сокетов

...