Comment surveiller Google et les réseaux sociaux facilement avec Scumblr ?
Certains ont surement vu dans l’actualité que Netflix avait publié une série d’outils en OpenSource.
Nous allons donc analyser 2 de ces outils :
– Scumblr (surveillance des réseaux sociaux)
– Sketchy (création de screenshots)
L’idée de Scumblr est de surveiller des mots-clés sur un panel de sites (Google, Google Play, Facebook, Twitter…). On pourrait tout aussi bien s’en servir pour surveiller la notoriété d’une marque en SEO.
Pour installer tout cela, nous allons partir d’un Linux sous Ubuntu 14.04.
Les 2 outils fonctionnent en Ruby et requiert pas mal de dépendances et de notions linuxiennes.
Commençons par Scumblr :
Suivez le guide ici :
https://github.com/Netflix/Scumblr/wiki
Il n’y a normalement pas de problèmes particuliers.
Faites juste attention lors de l’étape « Create an admin user », à bien renseigner une vraie adresse email.
Une fois que Scumblr tourne, il faut renseigner des moteurs de recherche spécifiques avec vos mots-clés.
Ex : Surveiller le mot clé « hack » sur le réseau Twitter.
Aller donc dans l’onglet Search, puis rajouter votre mot clé en sélectionnant le provider Twitter. Pensez à lui affecter un tag afin de pouvoir identifier facilement vos résultats.
A noter que vous pouvez créer vos propres providers si l’envie vous en prend.
Rajouter autant de recherche que désiré puis faites « Run All Search » et là si vous avez tout bien fait,
vous n’aurez pas de résultats !
En faites, pour chaque recherche, vous utiliser une API. Api qu’il faut renseigner dans les fichiers de configuration.
Dans le fichier config/initializers/scumblr.rb
Ebay ne m’intéressant pas trop, je me contenterais de vous donner l’url pour créer une clé : https://go.developer.ebay.com/
config.ebay_access_key = »
Facebook, aller sur https://developers.facebook.com/ puis créer une application. Cette application doit avoir été validée et avoir tous les champs settings de renseignée.
Vous pouvez prendre une application Facebook au hasard que vous avez déjà créer. Cela ne fera pas de conflit.
config.facebook_app_id = '' config.facebook_app_secret = ''
Google, il faut aller sur https://code.google.com/apis/console/ puis créer un projet. Une fois votre projet créé, il faut ajouter un crédential. Le nom du projet correspond au champ application_name.
Créer un nouveau Client ID, et une clé publique. L’api Key de la clé publique correspond à votre developer_key. Rajouter ensuite les APIS (Custom Search API , Google+ API, et Youtube Data Api).
Les 2 derniers ne sont pas forcément nécessaires, mais on n’est jamais trop prudent. Rendez-vous ensuite sur https://www.google.fr/cse/all
Il faut créer votre propre moteur de recherche dérivé de Google. Pensez à configurer votre langue, ne pas ajouter de sites, et surtout à indiquer « Chercher sur l’ensemble du web en privilégiant les sites inclus ».
Cliquez sur identifiant du moteur de recherche . Ce code correspond à votre code google_cx.
La configuration de youtube est identique.
config.google_developer_key = '' config.google_cx = '' config.google_application_name = '' config.google_application_version = '1.0' config.youtube_developer_key = '' config.youtube_application_name = '' config.youtube_application_version = '1.0'
Vous pouvez tester que ca fonctionne avec cette url (notez au passage la méthode pour scraper google en json en évitant les captchas):
https://www.googleapis.com/customsearch/v1?q=seo&cx=VOTRE_CODE_CX&key=VOTRE_DEVELOPER_KEY
Twitter, aller sur https://apps.twitter.com, et dans la section API Keys, recopier les infos suivantes . L’API Key correspond au consumer_key, l’API secret au consumer_secret. Les 2 derniers sont bien écrits.
config.twitter_consumer_key = '' config.twitter_consumer_secret = '' config.twitter_access_token = '' config.twitter_access_token_secret = ''
Dans le fichier de config devise.rb, il y a plusieurs options d’authentification. Décommentez juste la ligne:
config.mailer_sender
Dans le fichier de config /config/environment/development.rb à la toute fin, ajoutez la ligne :
Rails.application.routes.default_url_options[:host] = « localhost:3000 »
Voilà, redémarrer le tout, et relancer le serveur. Vous devriez commencer à avoir des résultats.
Passons maintenant à la phase pour avoir aussi les captures d’écran avec Sketchy.
Les dépendances de Sketchy sont nombreuses, et personnellement, j’ai dû au préalable passer par ces installations.
sudo apt-get install supervisor sudo pip install celery --upgrade sudo pip install Flask sudo pip install --upgrade --force-reinstall flask_restless sudo pip install --upgrade --force-reinstall flask_restful sudo pip install --upgrade --force-reinstall flask_sqlalchemy sudo pip install --upgrade --force-reinstall boto sudo pip install --upgrade --force-reinstall redis sudo pip install --upgrade --force-reinstall subprocess32 sudo pip install --upgrade --force-reinstall tldextract sudo pip install --upgrade --force-reinstall flask_script sudo pip install --upgrade --force-reinstall gunicorn
Sketchy utilise Celery pour ordonnancer les demandes.
Sketchy fonctionnera sur le port 8000, et il utilise également nginx pour effectuer la redirection du port https 443 vers le 8000.
Ainsi vous n’aurez pas une url de type http://192.168.1.75:8000/api/v1.0/capture
Mais plutôt https://192.168.1.75/api/v1.0/capture
Passez maintenant à la vraie installation:
https://github.com/Netflix/sketchy/wiki/Setup
//Lancement de Celery
//On teste avec la commande python manage.py runserver –host 0.0.0.0 –port 8000 et on installe ce qui manque
Modifier le fichier de configuration config-default.py comme ceci (oui, moi aussi je trouve ça bizarre, mais ça fonctionne):
HOST = os.getenv('host', '127.0.0.1:8000') SSL = os.getenv('use_ssl', False)
Ca y’est tout fonctionne. Maintenant voilà 2 scripts pour lancer vos 2 outils :
Parfois la base de sketchy posant problème (message d’erreur lors de l’appel sur http://192.168.1.75:8000/api/v1.0/capture), j’ai ajouté 2 lignes pour la supprimer/recréer.
Pour créer des screenshots, depuis scumblr, il faut cocher un résultat, puis sur la partie droite, lui dire de le générer.
Sketchy.sh :
cd /home/linux/sketchy sudo service nginx restart celery -A sketchy.celery worker & python manage.py drop_db python manage.py create_db python manage.py runserver --host 0.0.0.0 --port 8000 & source sketchenv/bin/activate cd supervisor supervisord -c supervisord.ini &
Scumblr.sh:
cd /home/linux/Scumblr redis-server & ../.rbenv/shims/bundle exec sidekiq -l log/sidekiq.log & ../.rbenv/shims/bundle exec rails s &
A noter qu’un système de workflow est configurable sur Scumblr pour envoyer des notifications, ou effectuer d’autres actions, mais je n’ai pour l’instant pas réussi à le faire fonctionner.
La masse d’informations autour du sujet est quasi nulle, il va fonc falloir vous débrouiller.
Une dernière petite aide maintenant si vous souhaitez faire des exports sans mettre les mains dans le ruby :
Placer vous dans Scumblr/db, puis faites la commande (remplacer ??? par votre tag):
sqlite3 development.sqlite3 "select results.id, replace(replace(title, X'0A', ' '),';',''),results.created_at,url from results INNER JOIN taggings ON results.id = taggings.taggable_id INNER JOIN tags ON tags.id = taggings.tag_id where tags.name='???' order by results.created_at desc;" > /tmp/export.csv
N’hésitez pas à me dire dans les commentaires si j’ai oublié des choses, ou si cette aide vous a été utile.