Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 14

Отправка запросов, а так же curl

05.06.2014, 19:29. Показов 6329. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня появилась идея по написанию что-то вроде бота, ну как бота... В общем, мне нужно, чтобы определённые запросы проходили раз в пару минут...
Нужна авторизация, так как я хоть что-то понимаю в php, то понимаю, что нужен именно curl, без него никак тут...
Так вот, после авторизации, будет просто проходить пару запросов, каждый раз в 3 минуты(примерно)...
Может кто-то поможет мне? Объяснит, что и где к чему, чтобы я дальше сам понимал... В php devel studio могу всё сделать, но я не люблю, когда комп выключен и бот не работает, хотел бы сделать через крон это всё и тогда, круглыми сутками будет всё работать... Прошу помощи!

Добавлено через 22 секунды
Запрос сам получить могу!

Добавлено через 11 минут
Я так понял, можно всё это сделать через file_get_contents(), только вопрос как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2014, 19:29
Ответы с готовыми решениями:

Подскажите curl или file_get_contents ? Для ограничения запросов по времени
Добрый день. Получаю данные со стороннего сервиса через их API (json) У сервиса есть ограничения по количеству запросов в секунду. ...

CURL и отправка Cookie
Всем доброго времени суток. Проблема следующего характера: с помощью cURL прохожу авторизацию на сайте, сохраняю куки в файл на сервере....

Отправка переменных из таблицы по cURL
Добрый день! Помогите модернизировать мой код: -нужно сделать условия отправки данных //если 1 отправить, а если 0 ждать. -как еще...

10
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
05.06.2014, 19:37
через file_get_content() не получится, тут нужен крон.
Сам в нем не сильно шарю но немного представляю как он работает.
Тебе надо сделать так:
Послать запрос на авторизацию с твоими данными со включенными куками.
Если авторизация прошла и пришли те куки отправлять на нужную тебе страницу post/get запросы.
Каждый раз проверяя те ли куки у тебя
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 14
05.06.2014, 20:12  [ТС]
Voka, я это прекрасно понимаю, но я не силён в php, я не понимаю, как отправить запрос...
вот кусок, что смог сделать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$url='http://thebest-fruitfarm.ru/;
function get_web_page( $url )
{
  $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
 
  $ch = curl_init( $url );
 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу
  curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
  curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);        // таймаут ответа
  // тут по идее должны идти запросы
  
  curl_close( $ch );
}
Может ты можешь помочь? Как сделать авторизацию? Я так понимаю, нужно просто запихнуть пару запросов, или как?

Добавлено через 28 минут
Voka, выше код - бред...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$url = 'http://thebest-fruitfarm.ru';
function auth( $url )
{
  $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14"; 
  $ch = curl_init( $url ); 
  curl_setopt($ch, CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); // запись куков
  curl_setopt($ch, CURLOPT_POST,1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, "url=http://thebest-fruitfarm.ru&log_email=тут мой логин&pass=тут мой пароль");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу  
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_exec ($ch);
  curl_close( $ch );
}
Теперь собственно вопрос, как сделать запрос, вроде чуть-чуть правильно сам накатал...
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
06.06.2014, 01:09
Вызвать
PHP
1
auth($url);
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
06.06.2014, 01:59
Лучший ответ Сообщение было отмечено Pypsik как решение

Решение

Вот тут посмотрите.
1
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 14
06.06.2014, 10:40  [ТС]
MVS76, сейчас посмотрим, если работает, + твой)

Добавлено через 2 минуты
MVS76, всё работает, спасибо... Можете ли подсказать как поставить на крон? И нужно ли, каждый раз делать авторизацию? или можно 1 раз сделать авторизацию и дальше выполнять действия, а то если я буду каждые 3 минуты авторизироваться и делать действия на сайте(заподозрят просто в использовании сторонних программ)
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
06.06.2014, 13:07
Лучший ответ Сообщение было отмечено Pypsik как решение

Решение

Можно один раз в (сутки, час, минут)... перезаписывать куки, какой срок хранения - посмотрите в браузере, а далее по ним авторизовываться.

Для записи раз в некоторое время, пишите такой код
PHP
1
2
3
4
if(текущее время == условие) {
// тут код который пишет куки, то есть с этой строкой
  curl_setopt($ch, CURLOPT_[B]COOKIEJAR[/B],$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt');
}
Поставить на крон ....
Вынесите код в отдельный файл, и напишите в службу поддержки хостинга, в письме укажите какой именно файл (название) и его расположение (путь), они вам напишут полный путь для крона, далее вы уже настроите на хостинге время через которое должен запускаться крон.
1
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 14
06.06.2014, 13:38  [ТС]
MVS76, к сожалению на хостинге(бесплатном) разрешено только использовать часы, сутки и т.д., а минуты только тем кто платил за премиум, есть ли какой-нибудь способ сделать что-то вроде псевдо-крона? за выше условие спасибо, но я подумал, зачем мне так? Ведь можно просто поставить на крон(каждый час) получать куки и сохранять их в файл
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$urlTo1 = 'http://thebest-fruitfarm.ru/'; // Куда данные послать первый раз
$login = 'логин';                            // Логин
$password = 'пароль';                            // Пароль  
$post1 = 'log_email='.$login.'&pass='.$password; // POST данные авторизации 
 
$urlTo2 = 'http://thebest-fruitfarm.ru/account/bonus6'; // Куда данные послать второй раз
$post2 = 'bonus=%CF%EE%EB%F3%F7%E8%F2%FC+%E1%EE%ED%F3%F1'; // POST данные второй раз
 
 
$ch = curl_init(); // Инициализация сеанса
curl_setopt($ch, CURLOPT_URL, $urlTo1);
curl_setopt($ch, CURLOPT_HEADER, 1); // получать заголовки
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, 'http://google.ru/');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); // записываем/запоминаем куки
curl_setopt($ch, CURLOPT_POSTFIELDS, $post1); // куда посылаем пост первый раз
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Говорим скрипту, чтобы он следовал за редиректами которые происходят во время авторизации
$result = curl_exec($ch);
 
curl_setopt($ch, CURLOPT_URL, $urlTo2);
curl_setopt($ch, CURLOPT_HEADER, 1); // получать заголовки
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, $urlTo1); // с какой страницы пришли (желательно указать)
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_COOKIEFILE,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); // говорим что уже авторизованы и показываем куки
curl_setopt($ch, CURLOPT_POSTFIELDS, $post2); // куда посылаем пост второй раз
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);     // Говорим скрипту, чтобы он следовал за редиректами которые происходят во время авторизации
$result = curl_exec($ch);
 
curl_close($ch);         // Завершаем сеанс
 
echo $result; // выводим результат
?>
Я тут подумал, так как на сайте можно только каждый час и более сделать крон, то мне в принципе запоминание куков и не нужно..... Спасибо.
Но если вы мне подскажете как сделать псевдо-крон(гугл не помог), то буду благодарен очень ...
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
06.06.2014, 14:29
Лучший ответ Сообщение было отмечено Pypsik как решение

Решение

Я использую так:

parser.php
PHP
1
2
3
4
5
6
7
8
9
10
11
$last_cron_time = file_get_contents('cron.txt'); // читаем файл
mt_srand(time()+(double)microtime()*1000000);
$xwx = mt_rand(10,60); // рандом, чтоб не было всегда ровно в определенный промежуток
$period = time() - 60 * (30+$xwx); // подберите под себя
if ($last_cron_time < $period) { // условие, если прошло больше от прошлого раза
...
curl_close($ch); // Завершаем сеанс
echo $result; // выводим результат
 
file_put_contents('cron.txt',time()); // пишем время выполнения в файл
}
Далее на самой посещаемой странице сайте, не зависимо от того кто посещает - бот и юзер, вызываете сам скрипт для его выполнения
PHP
1
include('parser.php');
1
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 14
06.06.2014, 16:13  [ТС]
MVS76, т.е. мои запросы будут отправляться в том случае, если кто-то будет посещать сайт? Я правильно понимаю? А так же вопрос, я поставил крон, но запросы не отправляются, вопрос почему?
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
06.06.2014, 16:46
Цитата Сообщение от Pypsik Посмотреть сообщение
в том случае, если кто-то будет посещать сайт?
Правильно, но сайт как правило бот посещает часто.
Цитата Сообщение от Pypsik Посмотреть сообщение
я поставил крон, но запросы не отправляются
Что-то не верно сделано, попробуйте отправить руками, если отрабатывает, то искать причину в ином.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.06.2014, 16:46
Помогаю со студенческими работами здесь

PHP CURL отправка файла
Здравствуйте, друзья! Подскажите, изучаю работу с КУРЛ. Ради спортивного интереса решил эммулировать отправку файла через форму. Вот код...

Отправка GET запроса средствами CURL
Добрый день! Есть такая проблема: Хочу получить информацию со страницы к примеру:...

Отправка post запроса php cURL
Объясните такой момент, как отослать post запрос просто попадая на страницу. Кликая по кнопке у меня получается. В общем изначально было...

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

Отправка запросов в php
Как аналогично &lt;form action&gt; отправить запросы с помощью пхп? вот была тема https://www.cyberforum.ru/php-beginners/thread644284.html, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru