Я написал примитивную оболочку HTTP (S) для сокетов на C. TLS, данные заголовка и публикации уже обернуты в нее.
Я уже успешно получил данные с разных сайтов через эту библиотеку, но как только я наткнулся на веб-сайт за CloudFlare, я не могу получить к нему доступ и получить 403 от CloudFlare. Я также повозился с cfuid_cookie
и другими значениями заголовка.
Должен ли я устанавливать определенные параметры заголовка, чтобы работать с прокси CloudFlare и получать доступ к фактическому веб-контенту? У меня действительно нет идей, как получить доступ к данным за прокси CloudFlare.
Ни прокси, ни VPN. Я использую очень примитивные сокеты, которые поставляются с "sys / socket.h". Это прямой ввод-вывод через файловые дескрипторы. Я только что поговорил с одним из разработчиков CloudFlare, и он немного рассказал мне о CloudFlare. Думаю, мне придется написать обходную библиотеку для доступа ко всему, что мне нужно, если другого пути нет. В основном я должен имитировать поведение браузера. Не буду лгать CloudFlare - это одновременно и благословение, и проклятие.
«В основном мне нужно имитировать поведение браузера» - ну да. Вся суть CloudFlare в том, чтобы блокировать автоматизированное программное обеспечение и пропускать через него только людей. Вы не создаете браузер, управляемый человеком, вы создаете свое собственное программное обеспечение, поэтому CloudFlare блокирует вас, поэтому вам придется имитировать браузер, управляемый человеком, чтобы пройти.
Единственное, что меня интересует, это завиток. Curl - это инструмент командной строки, который работает абсолютно нормально.
затем не стесняйтесь фиксировать и регистрировать HTTP-запросы, которые отправляет curl, и сравнивать их с запросами, которые отправляет ваш клиент, а затем соответствующим образом настраивать своего клиента.
Вы подключаетесь через VPN или сетевой прокси? Каково фактическое содержание ответа 403? Вам случайно предлагается ввести капчу? Есть ли в ответе какой-либо CloudFlare Javascript, который необходимо выполнить, прежде чем запрос будет успешным? По теме: Как использовать рекапчу на стороннем сайте в моем клиентском приложении (в частности, этот ответ, хотя это для C#).