Autopost to Svejo.net

Ако преди седмица ви показах как можете да публикувате във Facebook то днес ще ви покажа как можете да го направите във Svejo.net

Svejo add url to site
Svejo add url to site


<?PHP
/*******************************
* Svejo Status Updater
* Peter Nikolow
* http://peter.nikolow.me
* March 29, 2013
*******************************/

$login_email = 'type-here-your-mail';
$login_pass = 'type-here-your-password';
$url_4submit = 'type-here-your-url';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://svejo.net/user/login');
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 600x800)");
$loginpage = curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 1);
preg_match("/input name=\"authenticity_token\" type=\"hidden\" value=\"(.*?)\"/", $loginpage, $form_authtoken);
curl_setopt($ch, CURLOPT_POSTFIELDS,'authenticity_token='.urlencode($form_authtoken[1]).'&user%5Bemail_or_username%5D='.urlencode($login_email).'&user%5Burl_referer%5D=http%3A%2F%2Fsvejo.net%2F&user%5Bremember_me%5D=0&user%5Bpassword%5D='.urlencode($login_pass).'&commut=%D0%92%D0%BB%D0%B5%D0%B7');
$loginpage = curl_exec($ch);

sleep(10);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://svejo.net/publish/');
$page = curl_exec($ch);

sleep(10);
curl_setopt($ch, CURLOPT_POST, 1);
preg_match("/input name=\"authenticity_token\" type=\"hidden\" value=\"(.*?)\"/", $page, $form_authtoken);
$formvars = array();
$formvars['authenticity_token'] = $form_authtoken[1];
$formvars['story[url]'] = $url_4submit;
$formvars['commit'] = "Добави";
curl_setopt($ch, CURLOPT_POSTFIELDS, $formvars);
curl_setopt($ch, CURLOPT_URL, 'http://svejo.net/publish/submit');
$page2 = curl_exec($ch);

curl_close($ch);
?>

А сега малко разшифровка на горния код.

  1. Трябва да се заредим страницата http://svejo.net/user/login
  2. От горната страница вземаме изключително важния параметър authenticity_token който го подаваме заедно с името/паролата към същата страница
  3. Зареждаме тази страница http://svejo.net/publish/ с цел вземането на authenticity_token
  4. Извършваме POST към http://svejo.net/publish/submit като подаваме token-a и URL-a които трябва да бъдат предадени

За всеки случай сме прибавили едно временно заспиване от 10 секунди между заявките за да не може системата да ни разпознае като ботове, каквито всъщност сме. Средно дневно в системата се прибавят около 2100 линка (информацията е от 30 Март 2013 година) което прави 87,5 линка на час. Или приблизително 2,5 линка на минута. Ако горния код се модифицира също като предходния би могъл денонощно да публикува всякакви линкове независимо от времето,но не е това целта на упражнението. Задачата е приключена и вече имаме скрипт за автоматично публикуване във Svejo.net