Qual a melhor forma para a tela raspar uma senha local protegido em nome de um terceiro partido?

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

Pergunta

Eu quero escrever um programa que analisa o seu time de beisebol fantasia e notificá-lo de ações recomendadas, possivelmente várias vezes por dia. O problema é que você não está jogando basebol da fantasia no meu site, você está jogando no yahoo, ou CBS, ou ESPN, etc.

Na maioria desses sites, as equipes de fantasia e ligas não são públicas, então você deve estar logado e um membro da liga para ver as equipas na liga.

Tudo que eu preciso é o HTML simples para a página de equipa, em cada um desses sites para serem enviados para o meu servidor, onde eu possa, em seguida, analisar e analisar as notificações do usuário arquivo e enviá.

O problema é que eu preciso de nome de usuário / senha combinações de facilmente obter esses dados para o meu servidor quando eu precisar dele, e eu acho que haverá um monte de pessoas que não gostaria de confiar sua yahoo senha / ESPN / CBS para mim.

Eu tenho chegar a várias maneiras possíveis para resolver este problema:

  1. A maneira mais óbvia é a de pedir suas credenciais para o site no qual sua equipe está hospedado. Então eu poderia apenas programaticamente login e solicitar a necessidade de dados I. Eu estou supondo que um número de pessoas seria confortável dando-me suas credenciais, e um número deles não tanto.

  2. Escrever um cliente de desktop, que o usuário, em seguida, downloads. O cliente exigiria suas credenciais, mas poderia, então, basicamente, fazer exatamente a mesma coisa que a versão baseada em servidor faria, faça o login, solicitar a página e enviar a página de volta para o meu servidor. A diferença é que a senha nunca precisa deixar o seu desktop. O computador teria que ser, e este programa em execução para que este método de trabalho.

  3. Write navegador add-ons que navegar para a necessidade página I, usar o cookie que é salvo de um login anterior para acessar o site e enviar a página de volta para o meu servidor. Isso não exige o software de sempre pedir a sua senha, mas se o cookie expira Estou metralhado, e eu não sei muito sobre o navegador add-ons além.

Estou certo de que há outras opções, mas estes são o que eu vim acima com a medida.

Eu tenho duas perguntas: 1. Quais são as outras possibilidades para este tipo de tarefa? 2. Am I sobre-estimar a relutância das pessoas para me dar o seu yahoo (por exemplo) a senha? É a opção (1) acima a escolha óbvia?

Foi sugerido nos comentários que eu tente Yahoo Pipes, e que parecia uma sugestão prometendo assim que eu explorou um pouco. Tendo olhado agora em este , eu não acho que é uma opção. Assim, parece que eu vou estar indo com a opção 1.

Foi útil?

Solução

Este é um problema que eu lutava com um par de anos atrás, quando eu queria fazer a mesma coisa. Nosso site é http://benchcoach.com e as opções que foram considerando foram os seguintes:

nós Original considerado recebendo as credenciais do usuário e login. Nós, então, faça o login e raspar sua liga e informações da equipe. O problema é que depois de ler vários dos vários termos de serviço, esta seria sem dúvida estar a violar os termos de serviço. Além de tudo isso, Yahoo! foi definitivamente um dos sites que estavam considerando e seus usuários têm e-mail (onde poderíamos obter acesso a dados sensíveis) e Yahoo! carteira. Além disso, seria bastante trivial para Yahoo / ESPN / CBS para bloquear nossos logins programáticos por endereço IP.

A solução que se estabeleceram no (não 100% feliz, mas parece trabalho) foi pedir aos nossos usuários a instalar um bookmarklet (como delicioso, digg ou reddit) que ia postar a página HTML atual para os nossos servidores, onde podíamos analisar os dados e carregar nosso banco de dados. Se eles ainda estavam registrados em sua conta Yahoo / ESPN / CBS, gostaríamos de encaminhá-los diretamente para as páginas, de outra forma, esses sites levaria para autenticação. Ao clicar no bookmarklet, mais uma vez, iria publicar a página para nossos servidores.

Os prós dessa abordagem foi a de que as credenciais que de ninguém nunca cobrados por isso qualquer preocupação de segurança teria sido aliviada. Em segundo lugar, tornaria impossível para o Yahoo / ESPN / CBS para bloquear o acesso ao nosso serviço uma vez que nunca se conectar diretamente a seus servidores, mas em vez do navegador do usuário seria a postar o conteúdo do seu navegador para o nosso servidor.

Os problemas com isso é que ele leva 2 cliques para enviar uma página para o nosso site. Para cabeça para ligas de cabeça, precisávamos de 3-4 páginas de modo que levaria nossos utilizador 6-8 cliques para sincronizar o seu campeonato para os nossos servidores. Nós ainda estamos olhando para as opções para isso.

Uma observação importante é que eu corri para o gerente de produto do site do Yahoo Fantasy Football em uma conferência de um ano atrás. Nós conversamos sobre como estávamos recebendo os dados do Yahoo, e ele confirmou que a obtenção de credenciais violaria sua TOS e eles podem nos parar. Enquanto eu não acho que eles teriam, teria tornado difícil a investir tempo e energia para desenvolver isso só para tê-los bloquear o nosso site e mijar dos usuários fechando suas contas.

Outras dicas

A resposta potencialmente mais complicado poderia ser feito com (por exemplo) Yahoo Pipes.

Hipoteticamente, você cria um tubo que solicita ao usuário suas credenciais e proporciona-lhes uma url que contém seus dados raspados. Eles indicar este URL no seu site, e nunca tem que fornecer suas credenciais diretamente. Mesmo melhor, para a segurança consciente, seria possível examinar o que o tubo estava realmente fazendo antes de entrar em qualquer informação.

A desvantagem seria o aumento da complexidade (assim como você teria que escrever e manter o tubo). Dito isto, você poderia fornecer um link diretamente para o tubo publicada no seu site, para tornar as coisas o mais fácil possível.

A opção 1 é a escolha óbvia. Pessoas que confiam em seu site irá fornecer os detalhes. Não há outra maneira que você pode fazer o login para outro local enquanto screen scraping.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top