Как лучше всего отсканировать защищенный паролем сайт от имени третьей стороны? - PullRequest
2 голосов
/ 29 апреля 2009

Я хочу написать программу, которая анализирует вашу фэнтезийную бейсбольную команду и уведомляет вас о рекомендуемых действиях, возможно, несколько раз в день. Проблема в том, что вы не играете в фэнтези-бейсбол на моем сайте, вы играете на Yahoo, или CBS, или ESPN и т. Д.

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

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

Проблема в том, что мне нужны комбинации имени пользователя и пароля, чтобы легко получить эти данные на моем сервере , когда мне это нужно, и я думаю, что будет много людей, которые не захотят доверить их Yahoo / ESPN / CBS пароль для меня.

Я предложил несколько возможных способов решения этой проблемы:

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

  2. Напишите клиент для настольного компьютера, который затем загружается пользователем. Клиенту потребовались бы его учетные данные, но он мог бы сделать то же самое, что и серверная версия, войти в систему, запросить страницу и отправить страницу обратно на мой сервер. Разница в том, что их пароль никогда не должен будет покидать их рабочий стол. Их компьютер должен быть включен, и эта программа работает, чтобы этот метод работал.

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

Я уверен, что есть другие варианты, но это то, что я придумал до сих пор.

У меня есть два вопроса: 1. Каковы другие возможности для этого типа задачи? 2. Я переоцениваю нежелание людей давать мне свой пароль (например) Yahoo? Вариант (1) выше очевидного выбора?

В комментариях было предложено, что я пробую трубы Yahoo, и это выглядело как многообещающее предложение, поэтому я немного его изучил. Посмотрев сейчас на это , я не думаю, что это вариант. Итак, похоже, я пойду с вариантом 1.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2009

Потенциально более сложный ответ может быть сделан, например, с трубами Yahoo.

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

Недостатком будет увеличение сложности (а также вам придется писать и поддерживать канал). Сказав это, вы можете предоставить ссылку прямо на опубликованный канал с вашего сайта, чтобы сделать все как можно проще.

2 голосов
/ 11 сентября 2009

Это проблема, с которой я столкнулся пару лет назад, когда хотел сделать то же самое. Наш сайт http://benchcoach.com, и мы рассматривали следующие варианты:

Оригинал, который мы рассматривали, чтобы получить учетные данные пользователя и логин. Затем мы войдем в систему и проанализируем информацию об их лиге и команде. Проблема заключается в том, что после прочтения нескольких различных условий обслуживания, это определенно нарушает условия обслуживания. Кроме того, Yahoo! был определенно одним из сайтов, которые мы рассматривали, и у их пользователей есть электронная почта (где мы могли получить доступ к конфиденциальным данным), и Yahoo! бумажник. Кроме того, для Yahoo / ESPN / CBS было бы довольно банально блокировать наши программные входы по IP-адресу.

Решением, на котором мы остановились (не на 100% довольным, но, похоже, оно работает), было требование, чтобы наши пользователи установили букмарклет (например, Delicious, Digg или Reddit), который бы размещал текущую HTML-страницу на наших серверах, где мы могли Разбор данных и загрузка нашей базы данных. Если бы они все еще входили в свою учетную запись Yahoo / ESPN / CBS, мы бы направляли их прямо на страницы, в противном случае эти сайты запрашивали бы аутентификацию. Если щелкнуть букмарклет еще раз, страница будет опубликована на наших серверах.

Плюсы этого подхода заключались в том, что мы никогда не собирали чьи-либо полномочия, поэтому любая проблема безопасности была бы смягчена. Во-вторых, Yahoo / ESPN / CBS не сможет заблокировать доступ к нашему сервису, поскольку мы никогда не будем подключаться напрямую к их серверам, а браузер пользователя будет публиковать содержимое их браузера на нашем сервере.

Проблема в том, что для размещения страницы на нашем сайте требуется 2 клика. Для личной лиги нам потребовалось 3-4 страницы, поэтому нашему пользователю потребовалось бы 6-8 кликов, чтобы синхронизировать их лигу с нашими серверами. Мы все еще ищем варианты для этого.

Одно важное замечание: я встретился с менеджером по продукту на сайте Yahoo Fantasy Football на конференции год назад. Мы говорили о том, как мы получаем данные Yahoo, и он подтвердил, что получение учетных данных нарушит их TOS, и они могут остановить нас. Хотя я не думаю, что они это сделают, было бы трудно вкладывать время и энергию в разработку этого, чтобы они блокировали наш сайт и писали пользователям, закрывая свои учетные записи.

1 голос
/ 29 апреля 2009

Вариант 1 - очевидный выбор. Люди, которые доверяют вашему сайту, предоставят детали. Нет другого способа войти на другой сайт во время просмотра экрана.

...