Почему команда CURL на локальной машине возвращает статус 200 и нужные данные, а на сервере — ошибку 403 Forbidden? В чем может быть причина этой проблемы?

У меня возник вопрос. Я нашел нужный мне XHR-запрос, который возвращает цену, и решил парсить данные из него. Однако, там используется облачный сервис. Могу ли я получить пример cURL-запроса, который я нашел? Вот он: <br/> <pre><code>curl 'https://gmgn.ai/api/v1/mutil_window_token_info?device_id=05abe25f-15e8-4a3f-9c40-3b1bdf2f197c&amp;client_id=gmgn_web_2025.0122.190823&amp;from_app=gmgn&amp;app_ver=2025.0122.190823&amp;tz_name=America%2FLos_Angeles&amp;tz_offset=-28800&amp;app_lang=en' --compressed -X POST -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Referer: https://gmgn.ai/sol/token/Dy7M5B3Z5GnyhyHKkcHRFpYxw6eyiF1gqsDTBiT4t4oQ' -H 'Content-Type: application/json' -H 'Origin: https://gmgn.ai' -H 'Alt-Used: gmgn.ai' -H 'Connection: keep-alive' -H 'Cookie: __cf_bm=pY2YQ2WRdI4c_P37JEZaAC.A5uz0tM7tij4S5xt_goY-1737572260-1.0.1.1-qgkx18o1JMC2Hq5Roux3qugaO1qhQqv7GLFw2sxev6dLhg3OUeei2m4T1DVxfMy.Ote8BaVldUKc8xtZeoH9bQ; _ga_0XM0LYXGC8=GS1.1.1737572260.1.1.1737572276.0.0.0; _ga=GA1.1.1687377552.1737572261; cf_clearance=L1NTr3X6BIYBPKyhnPU4rxnTZrNi7gwnmfoUwyhyAAs-1737572261-1.2.1.1-WkrFWr0K6tGJBhibUCQMHsD4M73mtFJK78Bf3_JMQk_O6VLhz_hQMaFanPvVdi4tjT5D3hEOo21PC9wUVJfpWR94VmQVEJA6aXHx2klqp.QGXRvpeVfW2Kdv9WHejmtzQ7zM5NiMIhfZOIQGAmgk68E9QEVYs7QEUqV6bz45VSaw.kkZkVuD_mKLfWGuMVjV0f6qR0UtZJKU4ZK409IltUldKznL3tC7uc8l_MJr9XfLx.ntmi3DGEBM5q5h2Aim4zpLR54UjeONbGK.dYAt6qAwqKD1Ujcn8jifujD5uW4' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: same-origin' -H 'TE: trailers' --data-raw '{"chain":"sol","addresses":["Dy7M5B3Z5GnyhyHKkcHRFpYxw6eyiF1gqsD...
  • 22 января 2025 г. 20:24
Ответы на вопрос 2
Проблема с разными ответами от команды `cURL` на локальной машине и на сервере может быть вызвана несколькими факторами:

1. **Настройки IP**: Некоторые серверы могут блокировать запросы из определенных диапазонов IP-адресов. Например, если сервер настроен на то, чтобы принимать запросы только из определенных стран или сетей, то ваш сервер может находиться в заблокированном диапазоне.

2. **Заголовки запроса**: На сервере могут отсутствовать некоторые заголовки, которые необходимы для успешного выполнения запроса. Например, такие заголовки, как `User-Agent`, `Cookies`, `Referer`, `Origin` и т. д., могут влиять на доступ к API.

3. **Защита от автоматизированных запросов**: Многие API имеют защитные механизмы, которые могут блокировать автоматизированные запросы. Например, если сервер видит, что запросы идут не из браузера, он может вернуть 403 Forbidden.

4. **Проблемы с CORS**: Если вы делаете запросы с одного домена на другой, возможно, возникают проблемы с CORS (Cross-Origin Resource Sharing).

5. **Черные списки**: Сделайте запрос с сервера, чтобы проверить, не попал ли IP вашего сервера в черный список.

### Пример cURL-запроса

Чтобы использовать данный XHR-запрос, вы можете воспользоваться следующей командой `cURL`, адаптировав ее под ваши нужды. Учтите, что некоторые заголовки и параметры могут потребовать обновления в зависимости от вашей ситуации:

```bash
curl 'https://gmgn.ai/api/v1/mutil_window_token_info?device_id=05abe25f-15e8-4a3f-9c40-3b1bdf2f197c&client_id=gmgn_web_2025.0122.190823&from_app=gmgn&app_ver=2025.0122.190823&tz_name=America%2FLos_Angeles&tz_offset=-28800&app_lang=en' \
  --compressed \
  -X POST \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0' \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' \
  -H 'Accept-Encoding: gzip, deflate, br, zstd' \
  -H 'Referer: https://gmgn.ai/sol/token/Dy7M5B3Z5GnyhyHKkcHRFpYxw6eyiF1gqsDTBiT4t4oQ' \
  -H 'Content-Type: application/json' \
  -H 'Origin: https://gmgn.ai' \
  -H 'Connection: keep-alive' \
  -H 'Cookie: <ваши куки>' \
  --data-raw '{"chain":"sol","addresses":["Dy7M5B3Z5GnyhyHKkcHRFpYxw6eyiF1gqsD"...]}'
```

Обратите внимание, что вы должны заменить `<ваши куки>` на актуальные значения cookies, которые имеют значение для доступа к API. Также, возможно, вам понадобится добавить дополнительные заголовки или параметры в зависимости от настроек сервера.
Защита от парсеров. Надо RayID передавать облаку.
Похожие вопросы