C # HTMLAgilityPack 웹 사이트가 내 IP 주소를 차단했습니다.

c# html-agility-pack ip proxy

문제

HTMLAgilityPack을 사용하여 다음 웹 사이트에서 HTML을 가져 왔습니다. http://tennis.wettpoint.com/en/

괜찮 았지만 지금은 .. 1 시간 후 더 이상 작동하지 않습니다!

먼저 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..
}

내가 말했듯이, 그 사이트는 항상 괜찮 았어. 사이트가 나를 "아래로"보일 때까지. 그래서 코드를 바꿨다.

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..
}

(내 사이트에서는 작동하지 않지만 다른 사이트에서는 작동했습니다.)

그리고 적어도 나는 이것을 가지고있다. 그것은 또한 작동한다. 그러나 나의 사이트를 위해 아니다 :

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..
}

처음에는 사이트가 다운 된 것으로 믿었습니다. 브라우저로 사이트에 액세스 할 수 없기 때문에 .. 친구에게 물어 보니 사이트에 액세스 할 수있었습니다. 그래서 내 IP가 차단되었다는 것을 의미합니다. . 내가 무엇을 할 수 있을지? 내 IP (방법) 또는 Proxys (방법)를 사용하여 변경할 필요가 있습니까? 나는 이것이 일어날 것이라고 언급하지 않았으므로 아무 단서도 없습니다. (누군가 나를 도울 수 있기를 바랍니다 ..

수락 된 답변

위키 백과 (Wikipedia)는 IP 주소에서 가져온 요청 수를 모니터링하고 IP가 공격적으로 콘텐츠를 고치지 못하게합니다. Google 검색 결과를 스크랩하면 동일한 효과가 나타납니다.

처음에는 Wikipedia가 24 시간 동안 만 금지하지만, "불쾌감"을 계속 겪으면 IP가 영구적으로 금지됩니다.

IP 주소를 변경하거나 요청 속도를 늦추려면 HttpRequest에서 프록시를 사용하십시오.


인기 답변

크롤링의 첫 번째 규칙 : 공손함!

웹 사이트를 크롤링 할 때마다 크롤러가 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: /

즉, msnbot은 1 초의 지연으로 웹 사이트를 명시 적으로 크롤링 할 수 있습니다. MJ12bot, sistrix, TurnitinBot, Raven 및 dotbot은 명시 적으로 웹 사이트를 크롤링 할 수 없습니다. 자, 이것은 웹 사이트에서 볼 수있는 가장 첫 번째 방어선입니다. 이것은 우발적 인 학대로부터 웹 사이트를 보호하는 가장 공손한 방법입니다. robots.txt에 대한 자세한 내용은 다음을 참조하십시오. http://www.robotstxt.org/meta.html

적절한 크롤링 지연 (1 ~ 10 초)을 구현하고 다시 크롤링 할 수 있는지 확인해야합니다.

규칙 2 : 봇 트랩 조심해!

이것은 현재 당신에게 적용되지 않지만, 일반적으로 그것의 도자기이어야합니다. 정중하지 않은 봇을 잡는 방법 중 하나는 모든 로봇이 다음과 같이 특정 디렉토리로 이동하는 것을 금지하는 robots.txt에 명시적인 규칙을 넣는 것입니다.

사용자 에이전트 : * Disallow : / the / epic / robot / trap / path

그러면 HTML의 어딘가에 인간이 볼 수 없지만 봇이 볼 수있는 링크가 있습니다.

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: /

분명히 브라우저를 사용하고 robots.txt 규칙을 따르는 로봇이 /the/epic/robot/trap/path 로 갈 수 없다면이 링크를 보거나 클릭하는 사람은 없습니다. 그러나 robots.txt 규칙을 따르지 않고 크롤링 목적으로 내부 링크를 수집하는 봇은 결국 해당 디렉토리에서 끝날 것이며, 그곳에서 기다리는 것은 확실한 죽음입니다! 웹 사이트 운영자는 해당 링크를 방문한 사용자의 모든 IP를 수집하고 차단할 가능성이 큽니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.