Site Web C # HTMLAgilityPack a bloqué mon adresse IP

c# html-agility-pack ip proxy

Question

J'utilisais HTMLAgilityPack pour obtenir le code HTML du site Web suivant: http://tennis.wettpoint.com/en/

Cela a bien fonctionné, mais maintenant… après une heure, cela ne fonctionne plus!

J'ai d'abord essayé de changer mon code - sur la façon dont je récupère le code HTML:

string url = "http://tennis.wettpoint.com/en/";
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
   //Code..
}

Comme je l'ai dit, cela fonctionnait toujours bien .. jusqu'à ce que le site paraisse "en panne" pour moi .. Alors j'ai changé le code en:

string url = "http://tennis.wettpoint.com/en/";
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
   //Code..
}

(Cela n'a pas fonctionné pour mon site, mais pour un autre site)

et au moins j'ai ceci maintenant, qui fonctionne aussi, mais pas pour mon site:

string url = "http://tennis.wettpoint.com/en/";
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
   //Code..
}

Au début, je croyais que le site était en panne, car je ne pouvais pas accéder au site avec un navigateur non plus. J'ai donc demandé à des amis et ils ont pu accéder au site. . Que puis-je faire? Dois-je changer mon adresse IP (comment) ou utiliser Proxys (comment) .. Je n'ai aucune idée, car je n'ai pas mentionné que cela se produirait :( J'espère que quelqu'un pourra m'aider ..

Réponse acceptée

Wikipedia surveille le nombre de requêtes qu’il reçoit d’une adresse IP et empêchera les adresses IP de supprimer de manière agressive son contenu. Gratter les résultats de recherche Google aura le même effet.

Initialement, Wikipedia ne vous interdira que pendant 24 heures, mais si vous continuez à "offenser", votre adresse IP sera bannie de manière permanente.

Vous pouvez soit utiliser un proxy dans votre requête HttpRequest pour modifier votre adresse IP ou ralentir vos demandes.


Réponse populaire

Première règle de rampement: la politesse!

Chaque fois que vous explorez un site Web, vous devez vous assurer que votre robot respecte les règles définies dans son fichier robots.txt: http://tennis.wettpoint.com/robots.txt

User-agent: msnbot 
Crawl-delay: 1

User-agent: MJ12bot
Disallow: /

User-agent: sistrix
Disallow: /

User-agent: TurnitinBot
Disallow: /

User-agent: Raven
Disallow: /

User-agent: dotbot
Disallow: /

Cela signifie que msnbot est explicitement autorisé à analyser le site Web avec un délai de 1 seconde. MJ12bot, sistrix, TurnitinBot, Raven et dotbot ne sont explicitement PAS autorisés à explorer le site Web. C'est la toute première ligne de défense que vous verrez sur un site Web. C’est leur moyen le plus poli de protéger leur site Web contre les abus accidentels. Pour plus d'informations sur le fichier robots.txt, voir ici: http://www.robotstxt.org/meta.html

Vous devez implémenter un délai d'analyse raisonnable (1 à 10 secondes) et voir si cela vous permet d'analyser à nouveau.

Règle numéro deux: attention aux pièges à bot!

Cela ne vous concerne pas pour le moment, mais vous devriez en être conscient en général. Une façon d'attraper les robots qui ne sont pas polis consiste à insérer une règle explicite dans le fichier robots.txt, qui interdit à tous les robots d'accéder à un répertoire spécifique, tel que:

User-agent: * Disallow: / the / epic / robot / trap / path

Puis quelque part dans le HTML, il y a un lien, qui n'est pas visible pour les humains, mais visible pour les robots:

User-agent: msnbot 
Crawl-delay: 1

User-agent: MJ12bot
Disallow: /

User-agent: sistrix
Disallow: /

User-agent: TurnitinBot
Disallow: /

User-agent: Raven
Disallow: /

User-agent: dotbot
Disallow: /

Clairement, aucun humain ne verra ou ne cliquera jamais sur ce lien s'il utilise un navigateur et aucun bot qui respecte les règles de robots.txt n'ira jamais dans le /the/epic/robot/trap/path Cependant, les bots qui ne respectent pas les règles de robots.txt et ne collectent pas de liens internes à des fins d'exploration finiront par se retrouver dans ce répertoire, et ce qui les attend est la mort certaine! L'exploitant du site Web collecte et bloque probablement toutes les adresses IP des utilisateurs qui visitent ce lien.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi