web-dev-qa-db-fra.com

Raclage côté client par navigateur

Je me demande s'il est possible de gratter une page externe (interdomaine) via l'IP de l'utilisateur? 

Pour un site de comparaison de magasinage, je dois gratter les pages d'un site e-com, mais plusieurs demandes du serveur risquent de me faire interdire. IP et envoi au serveur pour traitement.

15
3zzy

Non, vous ne pourrez pas utiliser le navigateur de vos clients pour supprimer du contenu de sites Web à l'aide de JavaScript en raison d'une mesure de sécurité appelée Politique de même origine .

Il ne devrait y avoir aucun moyen de contourner cette politique et ce pour une bonne raison. Imaginez que vous puissiez demander au navigateur de vos visiteurs de faire n'importe quoi sur n'importe quel site Web. Ce n'est pas quelque chose que vous voulez arriver automatiquement.

Cependant, vous pouvez créer une extension de navigateur pour le faire. Les extensions de navigateur JavaScript peuvent être dotées de plus de privilèges que JavaScript classique.

Adobe Flash possède des fonctionnalités de sécurité similaires, mais je suppose que vous pouvez utiliser Java (et non JavaScript) pour créer un scraper Web utilisant l'adresse IP de votre utilisateur. Là encore, vous ne voulez probablement pas faire cela, car les plugins Java sont considérés comme peu sûrs (et lents à charger!) Et tous les utilisateurs ne l’auront même pas installé.

Revenons maintenant à votre problème:

Je dois gratter les pages d'un site e-com, mais plusieurs demandes du serveur me feraient interdire.

Si le propriétaire de ce site Web ne veut pas que vous utilisiez son service de cette manière, vous ne devriez probablement pas le faire. Sinon, vous risqueriez des implications juridiques (regardez ici pour plus de détails).

Si vous êtes du "côté obscur de la loi" et ne vous souciez pas de savoir si c'est illégal ou non, vous pouvez utiliser quelque chose comme http://luminati.io/ pour utiliser les adresses IP de personnes réelles.

27
Johann Bauer

Les navigateurs sont essentiellement conçus pour éviter de le faire…

La solution à laquelle tout le monde pense en premier:

jQuery/JavaScript: accès au contenu d'une iframe

Mais cela ne fonctionnera pas dans la plupart des cas avec les navigateurs "récents" (<10 ans)

Les alternatives sont:

  • Utiliser les apis officiels du serveur (le cas échéant)
  • Essayez de trouver si le serveur fournit un service JSONP (bonne chance)
  • Étant sur le même domaine, essayez un script intersite (si possible, peu éthique)
  • Utiliser un relais ou un proxy de confiance (mais cela utilisera toujours votre propre adresse IP)
  • Prétend que vous êtes un robot d'exploration de Web Google (pourquoi pas, mais pas très fiable et aucune garantie à ce sujet)
  • Utilisez un hack pour configurer le relais/proxy sur le client lui-même. Je peux penser à Java ou éventuellement à Flash. (ne fonctionnera pas sur la plupart des appareils mobiles, lent et flash a aussi ses propres limitations de site)
  • Demandez à Google ou à un autre moteur de recherche d'obtenir le contenu (vous pourriez alors avoir un problème avec le moteur de recherche si vous en abusez…)
  • Il suffit de faire ce travail par vous-même et de mettre en cache la réponse, ceci afin de décharger leur serveur et de réduire le risque d'interdiction.
  • Indexez le site vous-même (votre propre robot d'indexation Web), puis utilisez votre propre site Web indexé. (dépend de la fréquence des changements de source) http://www.quora.com/How-can-I-build-a-web-crawler-from-scratch

[MODIFIER]

Une autre solution à laquelle je peux penser consiste à passer par un service YQL , de cette manière, cela revient un peu à utiliser un moteur de recherche/un proxy public comme pont pour récupérer les informations à votre place. .] Voici un exemple simple pour ce faire , En bref, vous obtenez des requêtes GET interdomaine

3
Flavien Volken

Jetez un coup d'œil à http://import.io , ils fournissent quelques robots, connecteurs et extracteurs. Je ne sais pas trop comment ils échappent aux interdictions, mais ils le font d'une manière ou d'une autre (nous utilisons leur système depuis maintenant un an sans aucun problème).

2
Jan

Vous pouvez créer une extension de navigateur avec artoo.

http://medialab.github.io/artoo/chrome/

Cela vous permettrait de contourner les mêmes restrictions de stratégie d'origine. Tout est javascript et côté client.

1
user2816491