2016-10-29 20 views
1

私は、perlスクリプトから単純なAPI要求を実行しようとしています。しかし、それは動作していないようです。 Webブラウザにコピーしても同じ問題は問題なく動作します。単純なAPI要求が機能しない - 403エラー

#!/usr/bin/perl 
use strict; 
use warnings; 

use LWP::Simple; 

my $query = 'http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761'; 

my $result = get($query); 
print $result."\n"; 

getprint($query)を使用すると、403エラーが発生します。

+0

ユーザーエージェント文字列Perlの使用がブロックされている可能性があります。この問題は、別のものに変更することで回避できます。 – grooveplex

答えて

3

あなたは(すなわちだけでなく、ステータスコード403の)応答のボディを見ている場合、あなたが見つける:

このウェブサイト(checkdnd.com)の所有者があなたのアクセスベースを禁止していますあなたのブラウザの署名(2f988642c0f02798-ua22)に。

これは、おそらくブラウザ以外のブラウザによく似ているため、クライアントをブロックしていることを意味します。このサイトでは、User-Agentヘッダーを簡単に修正することができます。私にとっては、次の作品:

my $ua = LWP::UserAgent->new; 
$ua->default_header('User-Agent' => 'Mozilla/5.0'); 
my $resp = $ua->get('http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761'); 
my $result = $resp->decoded_content; 

問題のサイトは、彼らが「ブラウザの整合性チェック」を呼び出すいくつかのことを持っているのCloudFlareによって提供されているようです。 support page for this feature

...スパマーによって最も一般的に悪用される一般的なHTTPヘッダーを検索し、ページへのアクセスを拒否します。また、ユーザーエージェントまたは非標準のユーザーエージェント(悪用のボット、クローラ、または訪問者によってよく使用される)を持たないビジターにも挑戦します。

+1

これは、デフォルトのユーザエージェント( 'libwww-perl')がクラッカーによって使用されているという理由だけで、単純な攻撃を防ぐ簡単な方法だと付け加えることがあります。 – grooveplex

+0

@grooveplex:これが理由であるかどうかはわかりません。 "Mozilla/..."ユーザエージェントのバリエーションはマルウェアなどでも使われています - libwww-perlよりもはるかに少ないものです。それは、ブラウザから離れすぎているすべてのユーザーエージェントをブロックするようなものです。 –

関連する問題