先日も質問させていただいた件の続きになります。
https://teratail.com/questions/14452
上記質問のエラーはPHPの設定等の見直しをしたところ、
思い通りに動作するようになりました。
通常のスクレイピングも問題なく動作しました。
続いてプロキシ経由でスクレイピングをしようとしたところ、
プロキシ経由にならず、自宅IPアドレスになります。
自宅IP→プロキシ→スクレイピング先
こちらを参考にしました。
http://qiita.com/hatahata/items/e73790b99ffb933e0632
クラスはこういった感じです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━
class ProxyClient {
private $proxyIp;
private $proxyPort;
public function __construct($proxyIp,$proxyPort)
{
$this->proxyIp = $proxyIp;
$this->proxyPort = $proxyPort;
}
public function getClientInstacne()
{
$gclient = new GuzzleClient([ 'defaults' => [ 'proxy' => 'tcp://' . $this->proxyIp . ':' . $this->proxyPort ] ]); $client = new Client(); $client = $client->setClient($gclient); return $client; }
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━
参考元のプログラムからはプロキシサーバーの
IPアドレス取得プログラムやUser-Agentの取得プログラムは
必要ないので削除してあります。
エラーなどが発生しているわけではなく、
プロキシ経由になっていない感じです。
プロキシはSquid使っているのですが、
そちらのアクセスログを見ても記録されていないので、
スルーしているような感じです。
クラスは以下のように使っています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━
$c = new Scraping\ProxyClient("xxx.xxx.xxx.xxx",8080);
$client = $c->getClientInstacne();
$crawler = $client->request('GET', 'http://taruo.net/e/');
$title = $crawler->filter('title')->text();
━━━━━━━━━━━━━━━━━━━━━━━━━━━
何か使い方などが間違っているところがあるでしょうか?
何かお気付きの点などがあれば、
教えていただけますと幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー