Как лучше всего выполнить очистку защищенного паролем сайта от имени третьей стороны?

StackOverflow https://stackoverflow.com/questions/801115

Вопрос

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

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

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

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

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

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

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

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

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

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

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

Это было полезно?

Решение

Это проблема, с которой я столкнулся пару лет назад, когда хотел сделать то же самое.Наш сайт 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 и они могут нас остановить.Хотя я не думаю, что они это сделали бы, но было бы сложно тратить время и энергию на разработку этого только для того, чтобы они заблокировали наш сайт и разозлили пользователей, закрыв их учетные записи.

Другие советы

Потенциально более сложный ответ можно было бы сделать с помощью (например) трубок Yahoo.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top