perl脚本中禁止的403

perl脚本中禁止的403,perl,http-status-code-403,www-mechanize,Perl,Http Status Code 403,Www Mechanize,我正在尝试使用Perl Mechanize从网站中搜索和查找内容。在执行了几次之后,它一开始运行良好,我得到了403禁止的而不是搜索结果 $m = WWW::Mechanize->new(); $url="http://site.com/search?q=$keyword"; $m->get($url); $c = $m->content; print "$c";` 如何解决这个问题。请给我一些建议。在开始清理网站之前,你应该确保你有权这样做。大多数网站都有一个服务条款(TO

我正在尝试使用Perl Mechanize从网站中搜索和查找内容。在执行了几次之后,它一开始运行良好,我得到了403禁止的而不是搜索结果

$m = WWW::Mechanize->new();
$url="http://site.com/search?q=$keyword";
$m->get($url);
$c = $m->content;
print "$c";`

如何解决这个问题。请给我一些建议。

在开始清理网站之前,你应该确保你有权这样做。大多数网站都有一个服务条款(TOS),规定了如何使用网站。大多数网站不允许自动访问,并对知识产权设置了严格的限制

站点可以在三个级别上防止不必要的访问:

  • 约定:几乎每个站点都有的
    /robots.txt
    应该受到程序的尊重。不要以为你正在使用的库会处理这些问题;尊重robots.txt是你的责任。以下是一段摘录自:

    因此,它似乎不喜欢机器人提问,或使用网站搜索。谁会猜到呢

    开发人员还可以使用API和类似的服务来访问内容。例如,Stackoverflow有非常可定制的RSS源,发布了数据库快照,甚至有一个,和一个您可以使用的

  • 法律:(IANAL!)在访问网站进行任何非个人、即时消费之前,你应该阅读TOS,或者其他任何名称。它们说明您是否可以以及如何访问网站和重用内容。请注意,所有内容都有一定的版权。版权制度实际上是全球性的,所以你不能仅仅因为身在网站所有者之外的另一个国家而免于遵守TOS

    您通过使用站点(通过任何方式)隐式接受TOS

    有些网站将其内容授权给所有人。很好的例子是Wikipedia和Stackoverflow,它们允许用户在CC-BY-SA下提交内容(或者更确切地说,提交用户在该许可下将其内容许可到站点)。它们不能限制内容的重用,但可以限制对该内容的访问。例如,维基百科TOS包含以下部分:

    从事破坏性和非法滥用设施 [……]

    • 参与滥用或破坏服务的网站自动使用[…]
    • [……]给项目网站或与项目网站相连的网络或服务器带来不应有的负担
    • […]表明无意为其所述目的使用项目网站的流量
    • 未经授权,故意访问[…]或使用我们计算机系统中的任何非公共区域[…]
    当然,这只是为了禁止DDOS,但尽管机器人是Wikipedia的一个重要组成部分,但其他网站确实倾向于反对它们

  • 技术措施:……比如让来自侵权IP的连接超时,或者发送403错误(这是非常礼貌的)。其中一些措施可能是自动的(例如,由用户代理字符串、奇怪的引用、URL黑客攻击、快速请求触发),或者由警惕的系统管理员跟踪日志

如果TOS等没有明确说明你可以在网站上使用机器人,你可以随时向网站所有者申请书面许可


如果您认为存在误解,并且尽管经常使用某个站点,但仍被阻止,您可以随时与所有者/管理员/网站管理员联系,要求他们重新打开您的访问权限。

有些站点不喜欢被机器人抓取,这其实是可以理解的。某些服务发布您应该使用的API。关于网站的自动访问和使用,他们的TOS怎么说?好的,阿蒙。在这种情况下,我该如何解决这个问题呢?巴拉库马尔,我们已经多次告诉你网站的服务条款。“我给你的建议是与业主达成协议,这样你就可以直接获得数据,而不是通过刮擦。”巴拉库马尔我被一群人抓住并打了一拳,告诉我他们只做了一次自己的工作。你千万别用那作为不道德行为的借口。这是一种令人厌恶的态度。
 User-Agent: *
 Disallow: /ask/
 Disallow: /questions/ask/
 Disallow: /search/