Как определить запрос cURL и заблокировать его? Это невозможно?Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 Как определить запрос cURL и заблокировать его? Это невозможно?

Сообщение Гость »


Один сайт с той же сферой, что и мой сайт, блокирует запросы cURL. Я читал, что сервер не может определить настоящий браузер и cURL. Это невозможно. И я хочу повторить их защиту от ботов и cURL-запросов для своего сайта.

Но это не просто глупая проверка user-agent. Им требуются полные заголовки копий, как в реальных браузерах, иначе вы получите следующее сообщение:

Если вы не бот, скопируйте отчет и отправьте его нам. команда поддержки

И это еще не конец, потому что если вы скопируете полные заголовки запросов браузера для cURL, вы получите пустую страницу с генерацией cookie (насколько я понимаю, это JWT или что-то в этом роде). Я проверил поведение браузеров: в браузерах есть этот файл cookie, но если это ваше первое подключение к их сайту, их сервер вернет заголовки set-cookie с этим JWT и обычной веб-страницей.

Я заметил, что Ethernet говорит - определение cURL-запроса невозможно, но в любом случае они могли бы это сделать, а я не знаю как. Это действительно интересно. Я думаю, как они это делают. Я сравнил заголовки ответов для cURL и реального браузера (для первого контакта):

Ответ заголовка для реального браузера:

HTTP/1.1 200 Сервер: nginx Дата: вторник, 19 сентября 2023 г., 15:42:12 по Гринвичу Тип контента: текст/html;charset=utf-8 Кодирование передачи: фрагментированное Соединение: поддержание активности Поддержание активности: тайм-аут = 15 set-cookie: spid=some_spid_value; Путь=/; Безопасный; SameSite=Нет set-cookie: spsc=some_spsc_value; Путь=/; Безопасный; SameSite=Нет варьироваться: Accept-Encoding кодировка контента: gzip строгая транспортная безопасность: максимальный возраст = 15724800; включить поддомены X-SP-CRID: 1909462187:1 Ответ заголовка для cURL (с копией заголовков запроса, как в реальном браузере):

HTTP/1.1 200 ОК Сервер: nginx Дата: вторник, 19 сентября 2023 г., 15:43:28 по Гринвичу Кодирование передачи: фрагментированное Соединение: поддержание активности Поддержание активности: тайм-аут = 15 контроль доступа-разрешить-происхождение: * контроль кэша: без кэша истекает: вторник, 19 сентября 2023 г., 15:4327 GMT прагма: без кэша тип контента: текст/html X-SP-CRID: 1913083470:1 Если сравнить эти заголовки, вы увидите, что помимо set-cookie сервер отправляет некоторые другие заголовки для cURL и браузера. Дополнительные заголовки для cURL: access-control-allow-origin, expires, cache-control, pragma. Дополнительные заголовки для браузера: vary, content-encoding, strict-transport-security. Это говорит об определении запросов cURL. Я повторил свой эксперимент с Postman и использовал те же заголовки реального браузера. И я получил тот же результат, что и с cURL.

Я не знаю, как они это делают, но думаю, они видят какую-то подпись запроса (может быть SSL или другие метаданные), а затем определяют, является ли это cURL или нет.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»