Как обойти защиту от парсинга при использовании curl?
При php парсинге через curl появляется оишбка: «Сработал HTTP фильтр. Access Denied, так как возможно вы используете VPN или TOR IP adress». Как обойти защиту от парсинга при использовании curl? Вот скрипт, только url изменен. Вроде cookies подключены, useragent тоже есть, реферрер имеется. Может что-то еще добавить или изменить? Может что-то поменять среди параметров curl_setopt?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// САЙТ $url = 'https://test.ru'; // НАЧАЛО $ch = curl_init($url); // ПОДГОТОВКА ЗАГОЛОВКОВ $uagent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/531.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"; // ВСЯКИЕ ПАРАМЕТРЫ curl_setopt($ch, CURLOPT_USERAGENT, $uagent); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_REFERER, 'https://google.com'); curl_exec($ch); // ДОБАВЛЯЕМ КУКИ В ПАРАМЕТРЫ curl_setopt($ch, CURLOPT_COOKIE, "PMBC=96152e8e9a0168a731539c5e52c6b39a; PHPSESSID=jl0i13pn3157qca807jgp0jqa7; ServerName=WoW+Circle+3.3.5a+x5; serverId=1"); $html = curl_exec($ch); // КОНЕЦ curl_close($ch); var_dump($html);
Как обойти защиту от парсинга?
Все привет. Есть страница http://kvartiry.address.ua/sdajut/kiev/ostrovskogo-nikolaya-per-6477037/.
Народ, как обойти защиту при парсинге страницы?
Есть страница , на ней есть кнопка "показать номер", при нажатии на неё отображается номер, только.
Как обойти защиту
ку. ситуация такова: хожу на лайнере, интернет дорогой на борту и то можно посещать только соц.
Как обойти защиту?
Доброго времени суток! Подскажите пожалуйста. На рабочем компе имеется программа. После установки.
Есть ли простая методика защиты от curl-спама?
Используется простая предрегистрация, создаётся быстрый аккаунт с прохождением начального обзора сайта и последующей регистрацией по заданию на сайте с выдачей плюшек за выполнение задания по регистрации, НО 🙂
Есть ли способ типа защиты какой-то простой хотя бы?
p.s. в примере мой первый (. ) нуПярский курл, никогда не работал с ним 🙂
Мне вот ЭТО надо учесть, у меня GET-ом могут рефералы приходить 🙁
Да и курл можно и POST-ом отправить 🙂
ubuntu_lts,
1. гет с рефералом
2. сохранили реферала на серве
3. 301-редирект
4. гет на страницу с кнопкой начала, если был реферал.
5. Нажали на кнопку — отправили post на этот линк.
Если запросили этот же линк через гет и без реферала (или curl-подобное) — возвращаем 404.
1.
2.
3 Невозможно, так как по реф-ссылке сразу попадаем на сайт, нет никаких промежуточных страниц с хранением реф-параметра, нажали на ссылку или кнопку и сразу попали на сайт (как если бы просто нажали кнопку находясь на сайте) с привязкой к рефереру.
4.
От простых кравлеров/роботов — этого вполне достаточно. Хотя, можно и аяксом возвращать новый хеш-url на основе ip-шника для post-запроса)
А от целенаправленной атаки — только защита на стороне сервера: fail2ban и подобное..
Вот ссылка кнопки на сайте — /start
Вот рефссылка — http://example.osp/start/123
xmoonlight, так а своим курлом методом POST я могу транзит сделать реф-ссылки на обработчик у себя на сайте?
принял GET и потом сам у себя курлом отправил POST можно так?
так, а от меня то что теперь требуется?)
Сайт ваш — правьте, чтобы не сразу отрабатывало, а через 301 и т.д.
Невозможно, так как по реф-ссылке сразу попадаем на сайт, нет никаких промежуточных страниц с хранением реф-параметра, нажали на кнопку и сразу попали на сайт (как если бы просто нажали кнопку находясь на сайте) с привязкой к рефереру.
ну это визуально и будет сразу для пользователей, а реферера — вы уже (в этот же момент!) отправите на серв и добавите там куда нужно.
так а своим курлом методом POST я могу транзит сделать реф-ссылки на обработчик у себя на сайте?
принял GET и потом сам у себя курлом отправил POST можно так?
у меня форма с кнопкой /start
я поставил кое-какую проверку ФОРМЫ при переходе по ссылке /start
теперь курл запнулся на 1 итерации бесконечного цикла, всё работает как надо
теперь ко мне переходят по реф-ссылке, она методом GET пришла, обработчик GET не обрабатывает, нет смысла, так как в сторонней ссылке нет данных для проверки, как в форме, даже если бы я второй захотел сделать обработчик для GET
чтобы обработчик и кнопку и реф-ссылку обрабатывал как POST, делая и одну и ту же обработку и одну и ту же проверку
ubuntu_lts, гет с реферером:
1. Гет — обрабатываем
2. проверяем существование реферера
Гет без реферера:
1. Гет — не обрабатываем
2. Проверять нечего)
при нажатии на кнопку вставляется value с токеном, которого до нажатия в разметке нет и он меняется после каждого нажатия и сравнивается на обработчике
чтобы обработчик и кнопку и реф-ссылку обрабатывал как POST, делая и одну и ту же обработку и одну и ту же проверку
можно и так, но тогда лучше линк на кнопку подменять при переходе через js, чтобы прямыми post-запросами не долбили по кнопке.
Любая игра начинается таким образом, просто нажатием кнопки [Старт], прохождением ознакомления и последующим сохранением персонажа уже в игре.
ubuntu_lts, работает так внешне не значит что что-то где-то регистрируется там. Это простая демка которая плавно переходит в регистрацию нормальную.
Александр Аксентьев, нет, создаётся реальный аккаунт в БД и хранением где в сессиях где в куках, есть где после закрытия браузера мы попадём потом на стартовую, а есть где мы попадаем в свой предварительный аккаунт и можем продолжить регистрацию либо сбросим куки и попадём снова на главную и нажатие кнопки [Старт] создаст НОВУЮ запись в БД — этим играм сто лет уже, везде так делается, нет никакой регистрации, просто нажимаем, ознакамливаемся и потом регаемся, получая бонус за это
Александр Аксентьев указал правильные способы, но если цель — защититься только от curl, то можно проверить User agent — у curl он по умолчанию в формате «curl/0.1.2»:
function isCurl($useragent) < return mb_strpos($useragent, 'curl/') === 0; // или регуляркой >if(isCurl($_SERVER['HTTP_USER_AGENT']))
Но useragent можно подменить, поэтому это защита только от совсем простых атак.
Еще как вариант, аккаунт после предрегистрации, но до регистрации должен работать только некоторый непродолжительный период времени.
Войдите, чтобы написать ответ
Есть ли волшебный метод, чтобы запретить var_export вытащить приватные поля класса?
Защита контента моего сайта от загрузки через cURL
Я хочу защитить свой веб-сайт от этого внешнего доступа. Я использую PHP. Как защитить свой веб-сайт?
5 ответов
Если вы имеете в виду «как защитить свой сайт от доступа к программе, отличной от браузера», ответ в значительной степени «вы не можете». Браузер — это просто программа, которая отправляет HTTP-запросы. Вы можете играть в игру, пытаясь отклонить HTTP-запросы, которые выглядят так, как будто они не происходят из браузера, но тривиально легко для любой программы (с использованием curl, или библиотек Perl/Python/Ruby), чтобы имитировать заголовки, которые «реальный» браузер отправляет.
Это не более опасно, чем любой доступ через ваш сайт с помощью браузера; на самом деле, это то, что curl до вашего вопроса: веб-браузер и ничего больше. Если у вас есть уязвимости в системе безопасности, они будут повреждены. Если нет, они не будут. curl , однако, не усиливает и не уменьшает никаких уязвимостей; это всего лишь способ для PHP скрипт доступа к другому сайту (обычно через HTTP). Если вы хотите запретить загрузку контента, вы можете заблокировать входящие HTTP-запросы, но это побеждает цель веб-сайта, поскольку веб-браузеры выполняют идентичные запросы (а также могут загружать контент).
Я согласен с waiwai, однако, если вы действительно хотите «защитить себя» от базового доступа, отличного от браузера, подумайте о шифровании вашего контента и расшифровке его, используя, скажем, JavaScript, когда к сайту обращаются. Любой браузер, который понимает JavaScript (и включил его), сможет правильно отображать контент. Но даже шифрование содержимого может легко работать. Отказы 1) это не «безопасно», 2) поисковые системы могут неправильно индексировать ваш сайт (после этого они используют вызовы cURL), 3) пользователи, у которых отключен JavaScript, не могут получить доступ к вашему контенту. В целом я бы сказал, что это не стоит.
Еще одна вещь, которую вы можете сделать, — защитить свой сайт Captcha. Это предотвратит доступ через завиток, но позволит вашим пользователям получить доступ. Имейте в виду, что это не позволит поисковым системам посещать ваш сайт.
Вы не можете, если хотите, чтобы ваши пользователи могли его видеть. Вы можете настроить некоторую систему, чтобы она не обслуживала какой-либо контент, если только другой связанный фрагмент контента был очень недавно запрошен одним и тем же пользователем, но даже это не остановит того, кто действительно хочет его получить.
Ещё вопросы
- 0 Вставка латинских символов в mysql с использованием php?
- 0 MSQL: как получить 0 счетчиков вместо 1 и ноль с таблицами соединений или представлениями
- 1 os.read () дает OSError: [Errno 22] Недопустимый аргумент при чтении больших данных
- 1 SQL Trigger с Entity Framework
- 0 PHP require_once не работает для нижнего колонтитула
- 0 Как мне выполнить автозагрузку классов композитора только после того, как прежней функции автозагрузки не удалось найти загружаемый класс?
- 0 Получить файлы в каталоге на основе значения сеанса php
- 1 документация sikuli 1.0.2 и ScreenRegion
- 0 Существует ли какая-либо библиотека C / C ++, поддерживающая чтение / запись TIFF с 32-разрядными образцами?
- 1 Как я могу преобразовать изображение в оттенки серого, сохраняя прозрачность, используя cv2?
- 1 C # .NET 4.0 Перетаскивание между двумя приложениями
- 1 Рейтинг мест (Foursquare)
- 1 Обновление пользовательского интерфейса до фактического выполнения метода
- 0 Jquery Flot — как заставить строки данных начинаться с 0,0 и переходить к первой точке данных
- 1 Почему Process.Start отображает окно с сообщением об ошибке, хотя я перенаправляю стандартную ошибку?
- 0 Определение объекта подкласса
- 0 CSS кнопки не будут в центре моей навигации
- 0 Enum не был объявлен
- 0 Ошибка: ожидаемый идентификатор
- 0 Как сгенерировать исключение при несоответствии данных
- 1 Приложение со встроенным API Google Cloud Vision аварийно завершает работу с нулевой ссылкой на объект
- 0 Стек Mean.js — экспорт.читайте с помощью функций findOne и find, вызывайте в Angularjs
- 0 Chrome DevTools игнорирует изображение с «facebook» в имени файла
- 0 FIND_IN_SET автоматически добавляет IS NULL в запросе в codeigniter, а также необходимо добавить скобку в моем запросе для создания группы
- 1 Отправить электронную почту через Python с помощью Outlook 2016, не открывая его
- 0 Скрыть один элемент и показать другой при наведении
- 0 Получить содержимое файла HTML и добавить в строку PHP
- 1 Не удается прочитать свойство ‘_listenId’ неопределенного при использовании listenTo в представлении
- 1 Сбой экземпляра Python (obj, tpyes.GeneratorType)
- 0 Получить закладки из области видимости Chrome
- 0 WAMP — phpMyAdmin
- 0 Обновите родительскую область из директивы Child
- 1 Удалить / удалить каждое минимальное значение в каждой строке матрицы NxM?
- 1 Потокобезопасный объект доступа к данным C #
- 0 Можно ли расширить имя переменной? PHP
- 1 изменение цвета рамки текстового поля, если проверка не удалась
- 1 Передача параметров get в expressjs
- 0 Переадресация со стороны сервера в угловой вид SPA
- 1 Как получить, если приложение запрашивает разрешение?
- 1 Функции Pandas не показывают данные для всех столбцов
- 1 Параметр Deep Link IO ветви не появляется в реагировать родной
- 0 Уникальный указатель в связанном списке
- 1 Как добавить новый столбец в строку, содержащую определенное значение?
- 0 Как выделить выделенный узел в виде дерева (jquery)?
- 1 Как поделиться изображением Создано растровое изображение
- 0 Доступ к элементам HTML Parent, Child, Sibling в Angular JS
- 0 Почему мой фон мигает белым при изменении свойства фона css с помощью набора переходов?
- 1 Получить мобильный оператор в приложении Windows Phone XAML
- 0 Обновите столбец, используя порядок запроса выбора по убыванию наибольшего значения