Използване на няколко профила под Firefox

Когато ровенето във интернет се превърне във професия неминуемо човек се сдобива със няколко профила и започва едно чудене тип “със този браузър къде се бях логнал?”. Сега ще ви покажа как да активирате мултипрофилната поддръжка под Firefox и да я използвате във ваша полза.

  1. Излезте от Firefox ако е пуснат, ако не е пуснат пропуснете тази стъпка.
  2. Стартирайте команден ред. Под Windows трябва да се стартира cmd.exe, Linux/BSD/OSX потребителите трябва да отворят един терминал.
  3. Активиране на Firefox Profile Manager. Това е може би най-трудната част. Общо взето трябва да се напише един единствен ред.
    Windows 32 битов

    "C:\Program Files\Mozilla Firefox\firefox.exe" -ProfileManager

    Windows 64 битов

    "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -ProfileManager

    OSX

    /Applications/Firefox.app/Contents/MacOS/firefox-bin -ProfileManager

    Linux

    firefox -ProfileManager
  4. Firefox ще ви покаже заветния екран със списък със няколко профила (в момента е един) и няколко бутона. До сега сте работили във профила “default”. Сега натискате бутона “Create Profile…”
  5. Излиза един нов прозорец който ще ви попита как да се казва новия профил. Напишете име под което ще свързвате новия профил със предназначението му. Ако сте начинаещ не бутайте папките – Firefox сам ще се оправи и няма да омеши профилите.
  6. Натискате бутона “Done”
  7. Et voila! Имате чисто нов профил под който можете да стартирате Firefox.
  8. Сега при всяко стартиране Firefox ще ви попита под кой потребител искате да продължите работата си ако махнете “Don’t Ask at Startup”. Ако го оставите Firefox винаги ще стартира със Default профила и горната гимнастика от точка 3 ще трябва да се изпълнява когато трябва да влезете под другите профили.

Тъй като профилите не се смесват всички пароли, настройки, плъгини, бисквитки, отметки и други такива са индивидуални между профилите. Между профилите не може да се прехвърли нищо от горепосочените неща защото те са индивидуани за всеки един потребител. Единственно Firefox е общ и обновяването му ще обнови Firefox на всички потребители.

Има още един малък трик който ще опиша тук. Тъй като Firefox използва стартирания профил за да се взлезе със друг потребител трябва да се излезе от текущия. Което е малко досадно, ако трябва да се направи нещо малко по-бързо едновременно от двата потребителя. Mozilla са помислили за хитро решение на проблема като Firefox се стартира със опция “-no-remote” примерно като така:

"C:\Program Files\Mozilla Firefox\firefox.exe" -no-remote
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -no-remote
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote
firefox -no-remote

Използвайте реда който е за операционната система която ползвате както по-горе. Това ще доведе до стартирането на две (или повече!) работещи копия на Firefox във паметта и може да затормози доста компютъра ви в зависимост от дейностите които изпълнявате. Затова е по-удобно да изнесете тази команда някъде като икона за бърз достъп (shortcut). Никога ама абсолютно НИКОГА не стартирайте два пъти браузъра със един и същи профил едновременно! Може сериозно да повредите профила. Отделно трябва и много да се внимава при изтриването на профилите защото процедурата няма лесно възстановяване на данните ако случайно бъде изтрит профил който не е трябвало да се пипа.

Можете също така да стартирате и Firefox със бързо влизане във профил. Тук опцията е “-P <името -на-профила>” и може да се прибави и “-no-remote” за да се влезе във него дори и ако е стартиран вече браузъра под друг профил.

Отняколко месеца използвам тази техника успешно и вече не ми се налага да излизам и да влизам във различните услуги със различни профили. Механизма е проигран успешно и може да ви помогне ако имате повече от един акаунт във социалните мрежи (например 2-3 Facebook), ако правите активна оптимизация на сайтове или просто трябва да използвате акаунти на клиенти или приятели.

Ако искате повече информация можете да я намерите от извора тук, тук или тук

Facebook embedded post за новаци

Преди минути Facebook обновиха, че вече постовете може да се вкарват в сайтове. По-долу можете да видите пример в реално действие. И ето и как става:

<script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
<fb:post href="https://www.facebook.com/MobilioDevelopment/posts/575096699200112">


Защо това е важно? Ако преди трябваше да се покаже отделен и специфичен пост във сайт се използваше добре познатата техника – изрязан screenshot което водеше до неудобство при изтрити, променени или обновени постове. В момента ще можете директно да вмъкнете поста във сайта като всеки клик върху поста ще доведе до съответното действие – харесване, коментар или споделяне.

За момента услугата е активна на определени акаунти, но горния код е универсален и позволява използването му и за такива където услугата все още не е налична. Единственния проблем е, че линка във <fb:post&gr; трябва да се дописва на ръка което е известно неудобство.

Facebook status update

Autopost to Facebook

От известно време ме тормози идеята за автоматично обновяване (autopost) на статуса във Facebook и други социални мрежи без други системи и приложения. Затова взех задачата присърце, седнах и преправих един прост скрипт който да свърши черната работа.

Facebook status update
Facebook status update


<?PHP
/*******************************
* Facebook Status Updater version 0.1
* Peter Nikolow
* http://peter.nikolow.me
* March 22, 2013
*******************************/

function random_string( )
{
$character_set_array = array( );
$character_set_array[ ] = array( 'count' => 7, 'characters' => 'abcdefghijklmnopqrstuvwxyz' );
$character_set_array[ ] = array( 'count' => 1, 'characters' => '0123456789' );
$temp_array = array( );
foreach ( $character_set_array as $character_set )
{
for ( $i = 0; $i < $character_set[ 'count' ]; $i++ ) { $temp_array[ ] = $character_set[ 'characters' ][ rand( 0, strlen( $character_set[ 'characters' ] ) - 1 ) ]; } } shuffle( $temp_array ); return implode( '', $temp_array ); } $status = random_string(10); $login_email = 'type-here-your-mail'; $login_pass = 'type-here-your-pass'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://m.facebook.com/login.php?refsrc=http%3A%2F%2Fwww.facebook.com%2Flogin.php&refid=9'); curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login'); curl_setopt($ch, CURLOPT_POST, 1); 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, 0); curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php'); $page = curl_exec($ch); curl_setopt($ch, CURLOPT_POST, 1); preg_match("/input type=\"hidden\" name=\"fb_dtsg\" value=\"(.*?)\"/", $page, $form_id); preg_match("/form method=\"post\" id=\"composer_form\" action=\"(.*?)\"/", $page, $form_num); curl_setopt($ch, CURLOPT_POSTFIELDS, 'fb_dtsg=' . $form_id[1] . '&privacy=&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&target=&status=' . urlencode($status) . '&update=' . urlencode("Share")); curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com' . $form_num[1]); $page2 = curl_exec($ch); curl_close($ch); ?>

Скрипта е сравнително глупав, но ще ви го обясня накратко:

  1. Генерира се случаен стринг от 10 символа който ще бъде нашия нов статус. Това е много важно защото FB блокира показването на еднакви статуси и ми коства няколко часа докато го проумея. С това се избягва блокирането на статуса и е винаги уникален.
  2. До първия curl_exec се изпълнява логване във Facebook с указаното потребителско име и парола. За да се избегне тежкия desktop ajax се представяме като много прост мобилен браузър. Така избягваме получаването на iOS/Android ajax версия която също е по-тежка за обработка. Кукитата се запазват във външен файл с цел последващо използване.
  3. Със втория curl_exec се насочваме към основната страница на Facebook където ще обновим статуса на потребителя.
  4. До третия curl_exec се изпълнява основната функция на обновяването. Проблема е че FB използва динамични форми и първо трябва да обработим втория резултат като вземем изключително важните параметри fb_dtsg - уникално id за формата и composer_form - сочещ към url-a който трябва да бъде извикан с третата заявка. Така композираме третата заявка която обновява статуса с няколко фиксирани параметъра.
  5. Последния ред затваряме curl и задачата е приключена. Можем да изтрием файла с cookies защото вече не е необходим.

С което задачата е изпълнена с няколко особенности:

  • Скрипта има проблеми с кирилицата! За момента не може да се публикува статус без да се счупи кирилицата. Тук проблема е по-тежък защото самия FB кара браузъра със специфично HTML поле "charset_test" да върне какво поддържа като езици и подозирам че нещо и оттам обърква кирилицата.
  • Скрипта се представя за мобилен агент което води до показването на "from mobile" под поста.
  • За момента показването на линкове не е много ефективно.
  • Не могат да се качват снимки във timeline.
  • Липсва проверка дали предходните операции са се случили безпроблемно. Например ако потребителското име/паролата са грешни не се спира изпълнението както и не се проверява дали обновяването на статуса минава безпроблемно.
  • Не може да се контролира видимоста на поста (Public/Friends/Me). Мисля че се използва настройката на потребителя.
  • Публикуването е фиксирано от името на човека и не може да се публикува от страница. Засега...

Надявам се със следващите версии да подобря част от недъзите на съществуващия скрипт. Системата е много гъвкава и на тази база може сравнително лесно да се направи подобен скрипт за публикуване във Twitter, Linkedin, Sharetronix, StatusNet и други подобни системи. Малко по-сложно ще е публикуването в Google+, но принципа е същия както в горните системи и не виждам причина да не бъде налична и тази социална мрежа.
С горния скрипт може да се направят много неща - примерно може да се настрои сървър да отчита параметрите си в интернет, може да се настрои автоматично постване през час от база данни, може да се извърши постване от името на потребител за вирална реклама и т.н. Общо взето възможностите са неограничени с тънкия момент, че не е много по правилата на Facebook. Ако трябва да бъде по правилата трябва да бъде приложение което потребителя с OAuth да упълномощи да извърши няколко дейности включително промяна на статуса.
За моя радост използвам скрипта САМО за лично ползване и то не и под основния ми акаунт. Ако имате въпроси ще бъда радостен да ви отговоря.