Задать вопрос
@DemonFromIrk

Как спарсить данные (через guzzle или нет) если сайт кидает 403 forbidden?

Такой код есть:
spoiler
<?
require 'vendor/autoload.php';
$url= 'https://www.mos.ru/altmosmvc/api/v1/taxi/getInfo/?Region=Москва&RegNum=&FullName=&LicenseNum=&Condition=&pagenumber=1';
 
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;
 
$client = new Client([
  'base_url' => $url,
  'cookies' => $jar,
  'allow_redirects' => true,
  'decode_content' => true
]);
 
$req = $client->request('get', $url)->getBody()->getContents();
$req = $client->request('get', $url)->getHeaders();
echo "<pre>";
print_r($req);
?>


Как изменить код, чтобы не выдавало 403 ошибку?
  • Вопрос задан
  • 703 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Matmode
@Matmode
PHP/Symfony Developer
Отсутствие куки mos_id вызвает ошибку 403. Вот пример, который возвращает все необходимые данные
<?php

require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$url= 'https://www.mos.ru/altmosmvc/api/v1/taxi/getInfo/?Region=Москва&RegNum=&FullName=&LicenseNum=&Condition=&pagenumber=1';

$client = new Client([
    'base_url' => $url,
    'cookies' => CookieJar::fromArray(['mos_id' => 'CllGx1yOW5nBYizxkxtbAgA='], '.mos.ru'),
    'allow_redirects' => true,
    'decode_content' => true
]);

$response = $client->request('get', $url);
echo $response->getBody()->getContents();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы