[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автозаполнение форм cURL
romanet
Привел всем. Написал свою ЦМС систему и в целях ее расширения начал писать простую систему автоматического комментирования в блоги с банальной целью поднятия количества ссылок. Конечно с системами хрумар здесь никто не равняется, но больше даже для себя решил это написать. Ниже привожу пример скрипта который возвращает 200 код, что является успехом однако в блогах комментарии не появляются. Прошу помощи братства php программистов так как сам не могу въехать, что не так. Заранее благодарен.
<?php

/**
* Пример работы с библиотекой curl на php
*
@link http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-chast-2/
**/
$login = "Ivan";
$email = "mail@maiol.ru";
$comment = "Хороша стаття!!";
$url = "http://kino-critic.net/";
$comment_post_ID = "1567";
//инициализируем сеанс
$curl = curl_init();

//уcтанавливаем урл, к которому обратимся
curl_setopt($curl, CURLOPT_URL, 'http://seoonly.ru/wp-comments-post.php');

//включаем вывод заголовков
curl_setopt($curl, CURLOPT_HEADER, 1);

//передаем данные по методу post
curl_setopt($curl, CURLOPT_POST, 1);

//теперь curl вернет нам ответ, а не выведет
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//переменные, которые будут переданные по методу post
curl_setopt($curl, CURLOPT_POSTFIELDS, 'author='.$login.'&email='.$email.'&comment='.$comment.'&url='.$url.'&comment_post_ID'.$comment_post_ID);
//я не скрипт, я браузер опера
curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 11.00');

$res = curl_exec($curl);

//проверяем, если ошибка, то получаем номер и сообщение
if(!$res){
$error = curl_error($curl).'('.curl_errno($curl).')';
echo $error;
}
//если не ошибка, то выводим результат
else{
echo $res;
}

curl_close($curl);
?>




Спустя 15 минут, 54 секунды (20.02.2012 - 16:19) walerus написал(а):
Юнные спамеры повылазили :lol: неполучится туда запостить, там капча стоит, причем на Java, - собери картинку, так что выбирай другие блоги.

И у тебя не все поля
author=Name+
email=Mail%40mail.ru
url=My+Site
comment=Comment+
comment_post_ID=5284
comment_parent=0
capcode=16e66a48ddb25c0402033e6e6dcb5bd3%7C523a4f32c03fcb040eedc291da253df1%7Chttp%3A%2F%2Fback7.keycaptcha.com%2Fswfs%2Fckc%2F6d45588a5abdab51a54aedfb ce1281d5-%7C4f424762b5a23-2.3.0.014%7C1
submit=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C
subscribe=subscribe
submit=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C

вот такие там поля.

Спустя 8 минут, 36 секунд (20.02.2012 - 16:28) romanet написал(а):
Ну в общем не такие же и юные. Однако повторяю дело не в спаме, а на данный момент больше в принципе. Ну и пробовал я блогах без капчи. Просто пример сбросил старый. Вот непремер http://kinoblog.org/anonsy/hronika-anons.html. Все блоги от WP. Поля ыдентични. Что не так я делаю здесь. И если можно более подробно.

Спустя 8 минут, 45 секунд (20.02.2012 - 16:36) walerus написал(а):
Повторюсь, у тебя не все поля передаются
author=Name
email=Mail%40mail.ru
url=http%3A%2F%2Fgoogle.com
comment=Comment
submit=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9
comment_post_ID=2123
comment_parent=0
akismet_comment_nonce=c5256eb2a1


и ты не передаешь реферера, еще у WP, есть API, можно и через него слать, но там нужно знать ID поста., в общем не так все сложно, распарсь все формы и передавай )

Спустя 4 минуты, 9 секунд (20.02.2012 - 16:41) romanet написал(а):
Я понимаю, что не так все сложно однако с курламы работаю не так много поэтому любая подсказка рисует в голове подробную картину и понимание принципа работы. И мне легче все кодировать через urlencode. Или я не прав?

Спустя 13 минут, 19 секунд (20.02.2012 - 16:54) romanet написал(а):
Вот переделал согласно твоих подсказок однако результат предыдущей
<?php

/**
* Пример работы с библиотекой curl на php
*
@link http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-chast-2/
**/
$login = "Name+";
$email = "Mail%40mail.ru";
$comment = "Хороша стаття!!";
$url = "http%3A%2F%2Fkino-critic.net";
$comment_post_ID = "1095";
$submit='%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9';
$akismet_comment_nonce="c5256eb2a1";
$comment_paren = '0';
//инициализируем сеанс
$curl = curl_init();

//уcтанавливаем урл, к которому обратимся
curl_setopt($curl, CURLOPT_URL, 'http://kinoblog.org/wp-comments-post.php');

//включаем вывод заголовков
curl_setopt($curl, CURLOPT_HEADER, 1);

//передаем данные по методу post
curl_setopt($curl, CURLOPT_POST, 1);

//теперь curl вернет нам ответ, а не выведет
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//переменные, которые будут переданные по методу post
curl_setopt($curl, CURLOPT_POSTFIELDS, 'author='.$login.'&email='.$email.'&comment='.urlencode($comment).'&url='.$url.'&comment_post_ID'.$comment_post_ID.'&submit='.$submit.'&akismet_comment_nonce='.$akismet_comment_nonce.'&comment_paren='.$comment_paren);
//я не скрипт, я браузер опера
curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 11.00');

$res = curl_exec($curl);

//проверяем, если ошибка, то получаем номер и сообщение
if(!$res){
$error = curl_error($curl).'('.curl_errno($curl).')';
echo $error;
}
//если не ошибка, то выводим результат
else{
echo $res;
}

curl_close($curl);
?>

Спустя 3 минуты, 1 секунда (20.02.2012 - 16:57) romanet написал(а):
Буду очень благодарен если более конкретно укажешь на мои ошибки.

Спустя 21 минута, 13 секунд (20.02.2012 - 17:18) walerus написал(а):
Не, я же вроде сказал в чем проблема - у тебя не все поля форм, напиши регулярки, которые выдернут тебе эти формы, подставь значение свое, и отправляй или используй "DOMDocument", там уже все есть.

Спустя 17 минут, 19 секунд (20.02.2012 - 17:35) romanet написал(а):
Ну я добавил все поля на даинй момент хочу попробовать только на этом блоге http://kinoblog.org/anonsy/sekretnaya-sluz...nta-klausa.html. Я добавил CURLOPT_REFERER хоть на сколько я знаю это не обязательно. Я ручном указываю id новости. Однако на этой странице не появляется ни комментария. Конечно что для массового напишу регулярки которая извлечет все поля формы. Однако на данный момент я работаю с 1 сторикамы и с четко указанным полями. В форме их 8 такое же количество и у меня.
А и конечно большое спасибо, что стараетесь помочь.

Спустя 53 минуты, 53 секунды (20.02.2012 - 18:29) walerus написал(а):
romanet Я только что запостил скриптом, только тоже толку ноль, во первых на этом блоге модерируют сообщения, во вторых:
Цитата
Я добавил CURLOPT_REFERER хоть на сколько я знаю это не обязательно.
может и не обязательно, но у меня допустим стоит проверка на то, от куда человек пришел перед постингом сообщений, в третьих: Руками ты ничего не выставишь...
$comment_post_ID =  "1095";
$akismet_comment_nonce="c5256eb2a1";

Эти поля каждый раз будут разные, так что, то что ты руками там выставляешь до лампочки, у меня парсятся поля...

[0] => Array
(
[
fields] => Array
(
[
author] =>
[
email] =>
[
url] =>
[
submit] => Отправить комментарий
[comment_post_ID] => 1183
[comment_parent] => 0
[akismet_comment_nonce] => 38131d956c
[comment] =>
)

[
form] => Array
(
[
action] => http://kinoblog.org/wp-comments-post.php


вот и ты от этого пляши и последнее, где твои куки?, сайт как бы ставит тебе куку, а у тебя ее нет, вот он и не постит, по этому - у тебя куча недоработок.

С таким "пониманием" - лучше купить Хрумер( не реклама !!! а даже протест ! :angry: ), чем пытаться что то лепить ИМХО, но дело твое )

Спустя 1 час, 17 минут, 50 секунд (20.02.2012 - 19:47) romanet написал(а):
Хрумер у мене є. Тут більше діло принципу. Я звісно не почтківець в php но й вчитись мені ще є куди. Вот і ставлю собі такі задачі так набагато легше вивчити щось нове.

Спустя 6 минут, 11 секунд (20.02.2012 - 19:53) romanet написал(а):
[comment_post_ID] => 1183 Нуй конечно отношении этого я думаю, что оно должно быть постоянным иначе система не будет знать какой комментарий куда прилепить. То есть это идентификатор новости с которой крепится комментарий. Тай и эта $ akismet_comment_nonce = "c5256eb2a1"; переменная такого постоянна для каждой новости.

Спустя 2 часа, 1 минута, 27 секунд (20.02.2012 - 21:55) walerus написал(а):
Цитата (romanet @ 20.02.2012 - 16:53)
[comment_post_ID] => 1183 Нуй конечно отношении этого я думаю, что оно должно быть постоянным иначе система не будет знать какой комментарий куда прилепить. То есть это идентификатор новости с которой крепится комментарий. Тай и эта $ akismet_comment_nonce = "c5256eb2a1"; переменная такого постоянна для каждой новости.

Ты заблуждаешься - [comment_post_ID] => 1183 - это номер коммента, а не статьи, - это $akismet_comment_nonce = "c5256eb2a1"; - именно твой уникальный ключ, он не будет меняться, согласен...

Спустя 24 минуты, 33 секунды (20.02.2012 - 22:19) romanet написал(а):
[comment_post_ID] - ну на данный момент когда я захожу на 1 и ту статью эти ключи являются постоянными. Конечно зайдя на другую статью изменятся, здесь никто и не спорит. Но я обращаюсь к одной и той же статьи и те переменные у меня по крайней мере после 100 обновлений не меняются так считаю, что должно все работать и исключаю варинт ошибки в этих 2 переменных. Но также не исключаю варианта, что ошибка довольно проста и банальна но я ее не вижу)))

Спустя 2 минуты, 45 секунд (20.02.2012 - 22:22) romanet написал(а):
Так как я и ты говорил нужно будет писать регулярки для получения действительных идентификаторов, но пока я испытываю сам скрипт поэтому все манипуляции провожу над одной и той же новостью. Хотя я встретил в нескольких вариантах, даже при обращении напрямую кометар НЕ добавляется а закидуеться сначала для модерации.

Спустя 1 месяц, 16 дней, 12 часов, 49 минут, 23 секунды (8.04.2012 - 11:12) Kinoblog написал(а):
romanet, Ты бы урод сам блоги создавал, а потом спамил и проводил свои никчемные эксперименты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.