0
私はウェブサイトをこすりしようとしていますし、私は関係なく、私がしようとするもので403 Forbiddenを取得していない午前403を取得:スクレイピング試みエラー
- wgetの
- CURL(コマンドラインとPHP)
- PerlをWWW ::
- PhantomJS
を機械Iは、ユーザエージェントを変更する、プロキシととせずに、上記の全てを試し、そしてリファラヘッダを追加します。
私のChromeブラウザからリクエストヘッダーをコピーして、PHP Curlを使用してリクエストを送信しようとしても、403 Forbiddenエラーが表示されます。
リクエストをブロックするためにウェブサイトを誘発しているものやバイパスの方法についてのご意見やご提案はありますか?
PHP CURL例:
$url ='https://www.vitacost.com/productResults.aspx?allCategories=true&N=1318723&isrc=vitacostbrands%3aquadblock%3asupplements&scrolling=true&No=40&_=1510475982858';
$headers = array(
'accept:application/json, text/javascript, */*; q=0.01',
'accept-encoding:gzip, deflate, br',
'accept-language:en-US,en;q=0.9',
'referer:https://www.vitacost.com/productResults.aspx?allCategories=true&N=1318723&isrc=vitacostbrands:quadblock:supplements',
'user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',
'x-requested-with:XMLHttpRequest',
);
$res = curl_get($url,$headers);
print $res;
exit;
function curl_get($url,$headers=array(),$useragent=''){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_ENCODING, '');
if($useragent)curl_setopt($curl, CURLOPT_USERAGENT,$useragent);
if($headers)curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$response = substr($response, $header_size);
curl_close($curl);
return $response;
}
そして、ここでは、私は常に取得応答である:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access
"http://www.vitacost.com/productResults.aspx?"
on this server.<P>
Reference #18.55f50717.1510477424.2a24bbad
</BODY>
</HTML>
あなたは間違った方法で設定しています.CURLOPT_USERAGENTオプションを使用してください。 –
@FlashThunder、 "CURLOPT_USERAGENT"オプションがあり、$ useragent変数を送信すると設定されています。私は、ヘッダーと "CURLOPT_USERAGENT"を使用して、両方の方法でユーザーエージェントを設定しようとしました。私はそれが働いていない理由は何もないとは思わない。 – user735247