Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Добрый день!

Нужно помочь составить request запрос через Guzzle client через PHP на GraphQl апи

Есть вот такой curl:

curl 'https://stake.com/_api/graphql' \
  -H 'authority: stake.com' \
  -H 'accept: */*' \
  -H 'accept-language: ru' \
  -H 'access-control-allow-origin: *' \
  -H 'content-type: application/json' \
  -H 'cookie: cf_chl_3=1aa55659d348913; __cf_bm=4hxO3jDGAwyYve4x5_JxrNLmhA._0Iti0S.Hx_aYWgI-1710764820-1.0.1.1-2QLuJ4LAUovTSmbB6KMj312TMK7Kcsk74To9lwrUOt.QTwXjtZa1rpWkDNBWUPF8OBaubxhsXajrIYSmpV58Mg; currency_currency=btc; currency_hideZeroBalances=false; currency_currencyView=crypto; session_info=undefined; fiat_number_format=en; cookie_consent=false; leftSidebarView_v2=expanded; sidebarView=hidden; casinoSearch=["Monopoly","Crazy Time","Sweet Bonanza","Money Train","Reactoonz"]; sportsSearch=["Liverpool FC","Kansas City Chiefs","Los Angeles Lakers","FC Barcelona","FC Bayern Munich"]; sportMarketGroupMap={}; oddsFormat=decimal; cf_clearance=3sWUiNwmMGWAQ2y8f2GAfH9bHw4W9fs9v.Vd1lRmpT0-1710764822-1.0.1.1-EnqGd1_z8raLiVfZvOHmCWBkGG0Xavlg95ej4xGo0Bv4prQc5bu23FeTcqzBapXBW7V.sIpYdFryUPIS1KrlzA; locale=ru; intercom-id-cx1ywgf2=2bd34916-5d76-4287-9388-ef4154869ba5; intercom-session-cx1ywgf2=; intercom-device-id-cx1ywgf2=320c73c3-4379-4b4c-90e2-69d5698be48e; mp_e29e8d653fb046aa5a7d7b151ecf6f99_mixpanel=%7B%22distinct_id%22%3A%20%22%24device%3A18e51879363aee-071ce17f0a98a7-1d525637-1ea000-18e51879363aee%22%2C%22%24device_id%22%3A%20%2218e51879363aee-071ce17f0a98a7-1d525637-1ea000-18e51879363aee%22%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%2Fcasino%2Fgroup%2Fhacksaw-gaming%3F__cf_chl_tk%3DKyRI5ATkMCBqKsFESBDS_annrOdOKvDZXs2guVKVlNo-1710764771-0.0.1.1-1642%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%2Fcasino%2Fgroup%2Fhacksaw-gaming%3F__cf_chl_tk%3DKyRI5ATkMCBqKsFESBDS_annrOdOKvDZXs2guVKVlNo-1710764771-0.0.1.1-1642%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%7D%2C%22__mpus%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpr%22%3A%20%5B%5D%2C%22__mpap%22%3A%20%5B%5D%7D' \
  -H 'origin: https://stake.com' \
  -H 'referer: https://stake.com/ru/casino/group/hacksaw-gaming' \
  -H 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"' \
  -H 'sec-ch-ua-arch: "x86"' \
  -H 'sec-ch-ua-bitness: "64"' \
  -H 'sec-ch-ua-full-version: "122.0.6261.112"' \
  -H 'sec-ch-ua-full-version-list: "Chromium";v="122.0.6261.112", "Not(A:Brand";v="24.0.0.0", "Google Chrome";v="122.0.6261.112"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-model: ""' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'sec-ch-ua-platform-version: "12.6.8"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36' \
  -H 'x-language: ru' \
  --data-raw $'{"query":"query SlugKuratorGroup($slug: String\u0021, $limit: Int\u0021, $offset: Int\u0021, $showGames: Boolean = true, $sort: GameKuratorGroupGameSortEnum = popular, $showProviders: Boolean = false, $filterIds: [String\u0021], $isActivePlayersFeatureFlagOn: Boolean = false, $language: LanguageEnum = en) {\\n  slugKuratorGroup(slug: $slug) {\\n    ...GameKuratorGroup\\n    gameCount(filterIds: $filterIds, language: $language)\\n    groupGamesList(\\n      limit: $limit\\n      offset: $offset\\n      sort: $sort\\n      filterIds: $filterIds\\n      language: $language\\n    ) @include(if: $showGames) {\\n      ...GameKuratorGroupGame\\n      game {\\n        playerCount @include(if: $isActivePlayersFeatureFlagOn)\\n      }\\n    }\\n    filtersProvider: filters(type: provider) @include(if: $showProviders) {\\n      count\\n      group {\\n        id\\n        translation\\n        gameCount\\n      }\\n    }\\n  }\\n}\\n\\nfragment GameCardKuratorGame on GameKuratorGame {\\n  id\\n  name\\n  slug\\n  thumbnailUrl\\n  isBlocked\\n  groupGames {\\n    group {\\n      translation\\n      type\\n      id\\n      slug\\n    }\\n  }\\n}\\n\\nfragment GameKuratorGroup on GameKuratorGroup {\\n  id\\n  slug\\n  translation\\n  icon\\n  type\\n}\\n\\nfragment GameKuratorGroupGame on GameKuratorGroupGame {\\n  id\\n  game {\\n    ...GameCardKuratorGame\\n  }\\n}\\n","variables":{"slug":"recommended-slots","limit":30,"sort":"popular","showGames":true,"offset":0}}'

Через Postman он отдает нормальный респонз, но когда делаю на php, то в респонзе постоянно ошибка:

Client error: `POST https://stake.com/_api/graphql` resulted in a `400 Bad Request` response:\n
{"message":"unknown","isSafeError":true}

Что я делаю не так?

Моя попытка отправить запрос:

    public function handle(): void
    {
        $qraphQl = '
            query;
              query SlugKuratorGroup($slug: String!, $limit: Int!, $offset: Int!, $showGames: Boolean = true, $sort: GameKuratorGroupGameSortEnum = popular, $showProviders: Boolean = false, $filterIds: [String!], $isActivePlayersFeatureFlagOn: Boolean = false, $language: LanguageEnum = en) {
              slugKuratorGroup(slug: $slug) {
                ...GameKuratorGroup
                gameCount(filterIds: $filterIds, language: $language)
                groupGamesList(
                  limit: $limit
                  offset: $offset
                  sort: $sort
                  filterIds: $filterIds
                  language: $language
                ) @include(if: $showGames) {
                  ...GameKuratorGroupGame
                  game {
                    playerCount @include(if: $isActivePlayersFeatureFlagOn)
                  }
                }
                filtersProvider: filters(type: provider) @include(if: $showProviders) {
                  count
                  group {
                    id
                    translation
                    gameCount
                  }
                }
              }
            }
            
            fragment GameCardKuratorGame on GameKuratorGame {
              id
              name
              slug
              thumbnailUrl
              isBlocked
              groupGames {
                group {
                  translation
                  type
                  id
                  slug
                }
              }
            }
            
            fragment GameKuratorGroup on GameKuratorGroup {
              id
              slug
              translation
              icon
              type
            }
            
            fragment GameKuratorGroupGame on GameKuratorGroupGame {
              id
              game {
                ...GameCardKuratorGame
              }
            }
        ';

        $cookieParser = new CookieParser;
        $cookie = $cookieParser::fromString('currency_currency=btc; currency_hideZeroBalances=false; currency_currencyView=crypto; currency_bankingCurrencies=[]; session_info=undefined; fiat_number_format=en; sidebarView=hidden; sportsSearch=["Liverpool FC","Kansas City Chiefs","Los Angeles Lakers","FC Barcelona","FC Bayern Munich"]; sportMarketGroupMap={}; oddsFormat=decimal; locale=ru; intercom-id-cx1ywgf2=fa28ebad-4de3-4fcf-a73d-fb30f8caaf8b; intercom-session-cx1ywgf2=; intercom-device-id-cx1ywgf2=e49f924a-7e65-4aeb-ad46-c951d831a34c; cookie_consent=true; casinoSearch=["Money Cart 4","Toro Wilds Reel","g","island","Monopoly"]; cf_clearance=93tJNV1c0E3_IZReWOasBVWWd.Dlx0bMeNaRvtAyEBQ-1710700146-1.0.1.1-oMFBorHTLXRLJidFOrO72T9yGvSjKsLZdY6j7v6lxeOtZ.LdMuFg2nEFYEDO0WIFpQrPhOtzcsJ7Klz4J45Bcg; g_state={"i_p":1711307189489,"i_l":3}; leftSidebarView_v2=expanded; __cf_bm=7hQVlUfBJbMIr6PDirSQiYXVxPg6m7ekIhzTfoNEEXc-1710703806-1.0.1.1-5J3CPoPkjVXcmNo3YEV8ANDI2Cn34Z3zEpZYwxjLCb4WI1V_hZ52PwDjsvY9P4brNGRphPXXkU_kEPdOo_vXWA; mp_e29e8d653fb046aa5a7d7b151ecf6f99_mixpanel=%7B%22distinct_id%22%3A%20%22%24device%3A18e33330d6681f-002f8430cc4cd5-1d525637-1ea000-18e33330d6681f%22%2C%22%24device_id%22%3A%20%2218e33330d6681f-002f8430cc4cd5-1d525637-1ea000-18e33330d6681f%22%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%3F__cf_chl_tk%3Du9xXl039mQbVZQpJQguPdTVQR8sX7eI05v7nVC9mzyo-1710255959-0.0.1.1-1557%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%3F__cf_chl_tk%3Du9xXl039mQbVZQpJQguPdTVQR8sX7eI05v7nVC9mzyo-1710255959-0.0.1.1-1557%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%7D%2C%22__mpus%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpr%22%3A%20%5B%5D%2C%22__mpap%22%3A%20%5B%5D%2C%22%24search_engine%22%3A%20%22google%22%7D');
        $cookieJar = CookieJar::fromArray($cookie->toArray(), 'stake.com');

        try {
            $response = $this->client->request(
                Request::METHOD_POST,
                'https://stake.com/_api/graphql',
                [
                    RequestOptions::HEADERS => [
                        'content-type' => 'application/json',
                        'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
                        'x-language' => 'ru'
                    ],
                    RequestOptions::COOKIES => $cookieJar,
                    RequestOptions::FORM_PARAMS => [
                        'query' => $qraphQl,
                        'variables' => json_encode([
                            'slug' => 'pragmatic-play',
                            'language' => 'ru',
                            'offset' => 0,
                            'showGames' => true,
                            'showProviders' => true,
                            'isActivePlayersFeatureFlagOn' => true,
                            'sort' => 'userCount',
                            'filterIds' => null,
                            'limit' => 39,
                        ], JSON_THROW_ON_ERROR)
                    ],
                ],
            );
        } catch (\Throwable $exception) {
            dd($exception->getMessage());
        }

        dd($response->getBody()->getContents());
    }

Нужно написать request к https://stake.com/_api/graphql и указать что. делал не так.

2 месяца назад
guest_1710765956286
2 месяца в сервисе
Был
2 месяца назад
  • Похожие заказы
  • Приветствую! Есть сайт на WP с такой проблемой: при переходе по внутренним ссылкам открывается новая вкладка с другим сайтом (крипто-биржа). Возможно, сайт был взломан, но я не могу это определить. ...

    Завершен
    2 месяца назад
  • $40

    Добрый день, есть проект написанный на ларавел Сейчас необходимо сделать задачу: Пополнение прямым переводом , в данный момент подключена ПС - убираем Юзер заходит настраницу пополнения, выбирает метод и вводит сумму нажимая далее у него ...

    Закрыт
    23 дня назад
  • Для існуючої веб платформи (Фреймворк Laravel) відображення показників датчиків IoT необхідно додати модуль по роботі із картами. А саме: Адмін панель керування картами: 1) Створення карти із параметрами: геолокація, Зум. 2) ...

    Закрыт
    23 дня назад
  • $20

    1) Написать скрипт , чтобы менялся автоматический регистр нижний на верхний и наоборот. Пример: настройки-НАСТРОЙКИ 2) Написать скрипт чтобы менялся регистр имя файла на вид НаСтРоЙкИ.

    Закрыт
    2 месяца назад
  • На одном простом WordPress блоге, нужно вывести в правой колонке с виджетами - Авторов и их количество, списком. Например Сергей Статский (27), смотри скрин. До этого, это было выведено через функцию wp_list_authors. Однако мне ...

    Закрыт
    2 месяца назад
  • Восстоновить сайт из веб-архива на WP https://web.archive.org/web/20230401000000*/cigarsandleisure.com Домен, хостинг, wp все есть, Требуется человек восснонавливать на експ. домены постоянно. Пишите какой софт используете Пишите цену и сроки

    Закрыт
    24 дня назад
  • Есть MVP интернет магазина автозапчастей (Angular,  Nest.js). Нужно имплементировать TecDoc API (предположительная дока: https://developer.tecalliance.cn/en/introduction/) и реализовать фичи: - добавить товар из tecdoc на сайт;  - фильтры товаров;  - фильтрация товара по марка->модель->год->объем ...

    Закрыт
    24 дня назад
  • $100

    Увеличить скорость загрузки сайта на компьютере (до зеленой зоны) Увеличить скорость загрузки сайта на мобильной версии (до зеленой зоны) Проверка и удаление дублей страниц 301 редиректы для всего сайта. Проследить за правильной ...

    Закрыт
    24 дня назад
  • $100

    Увеличить скорость загрузки сайта на компьютере (до зеленой зоны) Увеличить скорость загрузки сайта на мобильной версии (до зеленой зоны) Проверка и удаление дублей страниц 301 редиректы для всего сайта. Проследить за правильной ...

    Закрыт
    24 дня назад