Вот и я для блога прикрутил этот самый твиттер. Мне до сих пор не понятно почему все так его любят, по моему говно какое-то, но нужно смотреть вперед, может и будет от него какой толк. Регистрация на самом твиттере прошла без проблем, зарегался получил адрес — http://twitter.com/Tomsk, дальше стал искать плагин для скрещивания ВордПресса и твиттера. Плагинов туча, какой сам я хотел не знаю, т.к. не знаю зачем он мне вообще нужен. Главное предназначение, что бы при публикации моего поста в блоге, он публиковался и на тветтере. Искал, искал, нашел — twitter-poster, он не только постит в тветтер, но и еще, по определенным тегам, начинает фоловить других людей. Причем делает это он массово, до 2000 человек, расчет простой как мне кажется
подписаться на кучу твиттеров в надежде что кто то в ответ тоже подпишется.
Это как раз для меня, скрипт сделает все, что бы мне не пришлось шевелить лишний раз руками и мозгами. Установил плагин, активировал, сделал пост, который удачно залился на твиттер, и бабах…урлы в твиттере шифруются, при помощи сервиса tinyurl.com. А меня это раздражает, если бы мне было нужно, я бы сам зашифровал, а так не спросясь меня, шифруется, так дело не пойдет. Взял отвертку, распотрошил архив с плагином, начал искать в тексте упоминания об этом сервисе шифрования, упоминаний не нашлось. Меня это еще больше взбесило, начал искать в ручную, благо файлов всего 5 и они не большие. Естественно, нашел я нужный код, и поправил его так как мне и нужно. Процедуру этого привожу ниже. Шифрование происходит в файле twitter-poster.php, открываем его и ищем вот такой участок кода:
Красивый код, ничего не скажешь, только у меня он тут перенесен на строки и разделен пробелами, в оригинале он записан в одну строку, я уж не знаю почему автор так сделал, зачем он это прятал, в ридми файле я не нашел упоминаний об этом. Но нужно отдать ему должное он обрамил начало и конец этой строки в комментарии, наверное что бы те, кто в теме сразу нашли, а может и для себя, что не путаться. Расшифровка этого кода:
$data = curl_exec($curl_handle);
$http_status = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
curl_close($curl_handle);
$data = trim($data);
list($num_posts, $sponsor, $msg, $url) = split(“\|”, $data);
if ($intervalPosts != $num_posts) {
update_option( ‘intervalPosts’, $num_posts );
}
if (!empty($msg) && !empty($url)) {
if(strlen($allowSponsorTweet) > 0) {
global $wpdb;
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, “http://tinyurl.com/api-create.php?url=”.$url);
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl_handle, CURLOPT_REFERER, $referrer);
$short_url = curl_exec($curl_handle);
curl_close($curl_handle);
$twitter->post($msg, $short_url);
$postID = $post->ID;
$new_content = $post->post_content . $sponsor;
$sql = “Update wp_posts set post_content=” where ID=$postID”;
$query = sprintf(“Update wp_posts set post_content=’%s’ where ID=%s”,
mysql_real_escape_string($new_content), mysql_real_escape_string($postID));
$rows_affected = $wpdb->query($sql);
error_log(“Rows affected by query : $rows_affected on post ID $postID”);
sleep(1);
}
}
}
// go ahead and submit to twitter
$twitter->post($title, $tinyurl);
$posts_so_far++;
update_option( ‘twitterPosts’, $posts_so_far );
$tags = $this->GetOptionValue( ‘twitterTags’ );
$tag_array = split(“,”, $tags);
$selectedTag = $tag_array[array_rand($tag_array)];
$numFriends = $this->GetOptionValue( ‘twitterAddFriends’ );
if ($numFriends > 100) {
$numFriends = 100;
update_option( ‘twitterAddFriends’, $numFriends );
}
$numFollowedBy = $twitter->getNumFollowing();
$numFollowing = $twitter->getNumFollowers();
if ($numFollowing >= 2000 && $numFollowedBy
// remove older members currently following
$twitter->stopFollowingNum($numFriends);
}
$twitter->addFriends($selectedTag, $numFriends);
// Ping the twitter feed
$rss_url = $twitter->getRssUrl();
tw_pinger($rss_url);
}
Ну вот уже что то разборчивое, можно приступать к анализу заболевания пациента, для начала заменим зашифрованный код на расшифрованный, внимательно смотрим, и видим что использование сервиса tinyurl.com первый раз начинается в этом участке кода:
Меняем его так, что бы линк не изменялся. Я всегда стараюсь не удалять исходный код, мало ли, поэтому только за комментируем неугодную нам часть:
Все, теперь при постинге в твиттер, ссылки будут нормальными. Но! если немного приглядеться к коду который идет далее , то можно обнаружить интересную вещь, а именно: этот плагин, рассматриваем естественно, его версию, которая не подверглась хирургическому вмешательству, ставит в твиттере спонсорские ссылки, которые выгодны автору плагина. Я не сколько не против этого, значит автору заплатили, и он смог немного заработать на этом. Я за. К тому же эту опцию можно деактивировать в настройках и такие ссылки не будут появляться. Но автор решил схитрить, и провернуть темные делишки втихаря, а именно, производить клики по ссылкам от имени пользователя плагина, вот тут как раз я против, мне это не нравится, поэтому поддавшись праведному гневу, вырубил мечом не понравившийся мне код. Может, и я конечно поступил не совсем хорошо, изменяя то что не принадлежит моему перу, но мне насрать. Уж если делаешь плагин, бесплатным, то будь добр не прячь карты в рукаве. Мой, окончательный вариант, пропатченного кода можно увидеть ниже. А в самом конеце поста находится ссылка на архив, с модифицированным файлом. За сим прощаюсь с вами.
}
// go ahead and submit to twitter
$twitter->post($title, $tinyurl);
$posts_so_far++;
update_option( ‘twitterPosts’, $posts_so_far );
$tags = $this->GetOptionValue( ‘twitterTags’ );
$tag_array = split(“,”, $tags);
$selectedTag = $tag_array[array_rand($tag_array)];
$numFriends = $this->GetOptionValue( ‘twitterAddFriends’ );
if ($numFriends > 100) {
$numFriends = 100;
update_option( ‘twitterAddFriends’, $numFriends );
}
$numFollowedBy = $twitter->getNumFollowing();
$numFollowing = $twitter->getNumFollowers();
if ($numFollowing >= 2000 && $numFollowedBy
// remove older members currently following
$twitter->stopFollowingNum($numFriends);
}
$twitter->addFriends($selectedTag, $numFriends);
// Ping the twitter feed
$rss_url = $twitter->getRssUrl();
tw_pinger($rss_url);
}
Скачать модифицированный файл twitter-poster.php
Комментарии