Referer в Guzzle v6 для клиента с последовательными запросами.
function useReferer() {
return function (callable $handler) {
return function (
Psr\Http\Message\RequestInterface $request,
array $options
) use ($handler) {
static $lastRefer; // немного некрасиво если использовать параллельно в нескольких клиентах
$exist=$request->getHeaderLine('Referer');
if(empty($exist) && !empty($lastRefer)) { // если есть - не заменяем.
$request = $request->withHeader('Referer', $lastRefer);
}
$lastRefer=(string)$request->getUri();
return $handler($request, $options);
};
};
}
$stack = new GuzzleHttp\HandlerStack();
$stack->setHandler(new GuzzleHttp\Handler\CurlHandler());
$stack->push(useReferer());
// не забываем указать и значения по умолчанию. А то если мы создаем Handler нам и следить за его наполненостью.
$stack->push(GuzzleHttp\Middleware::httpErrors(), 'http_errors');
$stack->push(GuzzleHttp\Middleware::redirect(), 'allow_redirects');
$stack->push(GuzzleHttp\Middleware::cookies(), 'cookies');
$stack->push(GuzzleHttp\Middleware::prepareBody(), 'prepare_body');
$client=new GuzzleHttp\Client(array('base_uri' => 'http://example.com/','verify'=>false,'http_errors'=>false,'handler'=>$stack));
$r=$client->get('page1');
$r=$client->get('page2');