【问题标题】:Web Server Block libwww-perl requestsWeb 服务器阻止 libwww-perl 请求
【发布时间】:2019-01-18 14:06:01
【问题描述】:

我第一次有网络抓取脚本(Perl 语言)它运行良好,但在〜 3500(GET 请求)服务器返回 403 错误(禁止|不是 ip 禁止)但在(python 语言)中使用相同的脚本时我发现同样的问题工作,但在〜3500个请求后我得到403(24小时后重新运行)我不知道问题是什么以及如何解决它

我阅读了有关 libwww-perl 的信息:

https://cloudkul.com/blog/block-libwww-perl-attack-in-apache-web-server/

【问题讨论】:

  • 你怎么知道这不仅仅是禁止你的 IP 地址?
  • 您是否尝试过联系网站运营商?你有他们的权限来抓取他们的网站吗?
  • @melpomene 我可以从 burp 套件发送请求
  • 如果我理解正确,您问为什么在发送 3500 个请求而被阻止后收到不同的错误消息?为什么你认为这很重要?

标签: python perl web-scraping block http-status-code-403


【解决方案1】:

使用agent method provided by LWP::UserAgent 更改“用户代理标识字符串”。

应该解决基于客户端标识字符串的阻塞。
不会解决基于滥用行为的阻塞问题。

perldoc LWP::UserAgent

代理

  my $agent = $ua->agent;
  $ua->agent('Checkbot/0.4 ');    # append the default to the end
  $ua->agent('Mozilla/5.0');
  $ua->agent("");                 # don't identify

获取/设置用于在网络上识别用户代理的产品令牌。代理值在请求中作为 User-Agent 标头发送。

默认是libwww-perl/#.### 形式的字符串,其中#.### 替换为此库的版本号。

如果提供的字符串以空格结尾,则将默认的libwww-perl/#.### 字符串附加到它。

用户代理字符串应该是一个或多个简单的产品标识符,带有一个可选的版本号,由/ 字符分隔。

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 2016-09-08
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2018-06-28
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多