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

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

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

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

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

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

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

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

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

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

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

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


person Brad    schedule 29.04.2009    source источник
comment
Вы также можете проверить, разрешено ли это TOS yahoo / espn / cbs ...   -  person Stephan202    schedule 29.04.2009
comment
yahoo поддерживает openid, так что вы сможете получить доступ к api через него?   -  person mjallday    schedule 29.04.2009


Ответы (3)


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

person sparky    schedule 11.09.2009
comment
Спасибо за ответ. Я согласен с тем, что это кажется хорошим компромиссным решением, но для того, что я надеялся сделать, мне действительно нужен был доступ в реальном времени ... Я смог разрешить им войти в систему, а затем сохранить файл cookie до истечения срока его действия (и, таким образом, избавиться от их учетные данные), но после этого потребовался еще один логин. Что касается их TOS, есть приложение для iPhone для управления фэнтезийными командами yahoo, которое хранит учетные данные, но даже оно сейчас не работает для меня. Думаю, нелегкое решение. - person Brad; 18.09.2009

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

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

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

person Zxaos    schedule 29.04.2009
comment
Я смотрю на трубы Yahoo, спасибо за внимание к этому. Не знаю, сработает это или нет, но это интересный проект от Yahoo. - person Brad; 29.04.2009

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

person Bhushan Bhangale    schedule 29.04.2009
comment
Я думаю, вам понравится 1. Вы запрашиваете пароль для команды Fantasy Baseball, а не от банковского счета, поэтому я ожидаю, что большинство людей будут счастливы передать его. - person Dave Webb; 29.04.2009
comment
Это правда, но если бы сайт был, например, yahoo, вы также могли бы передавать свой адрес электронной почты / группы / другие учетные данные, поскольку все они могут быть связаны с одной и той же учетной записью. - person Zxaos; 29.04.2009
comment
Zxaos, вот откуда взялась моя пугливость как пользователя этого продукта. Я делаю ряд вещей на Yahoo, включая электронную почту, которые я, вероятно, не хотел бы передавать ради преимущества в фэнтезийном бейсболе. Что касается espn или cbs, у меня, вероятно, не было бы такого же беспокойства, по крайней мере, не в такой степени. - person Brad; 29.04.2009