Hackeando o Facebook com Python 3 Fernando Masanori FATEC Centro Paula Souza @fmasanori
Agenda •
•
•
•
•
•
Python 3 (nestes slides) Facebook Material para aprofundamento Disc Discla laim ime er: co code de for fun fun (no (no pass passw word ord hac hacking king)) Obs: se preferir: slides para Python 2.7 Obs: em junho junho de 2013 a API API aberta do Twitter foi aposentada, veja nos slides finais como autenticar e acessar os dados
Conhecendo os assistentes •
•
•
•
•
Estudantes Professores Profissionais de TI Sabem programar Sabem programar em Python
Prof old notebook
Prof new no notebook
CV Resumido • • • • • • • • •
Graduado IME USP Mestrado Mestrado ITA ITA Software Express Credicard Mastercard PriceWaterhouseCoopers ITAU BankBoston Fundador Hacker Clube SJC FATEC SJC (amo dar aulas) Nota dada para minhas aulas: 9,7
Adicione / Siga o Prof •
•
•
•
•
Fernando ernando Masano Masanori ri (Massa (Massa)) facebook.com/fmasanori twitter.com/fmasanori about.me/fmasanori Interesses: Algoritmos, Estrutura de Dados, Python, NoSQL, Business Intelligence, Google Technology, Facebook, Twitter
Palestras em eventos de TI
Algumas palestras •
•
•
•
•
•
•
•
•
•
•
•
PyCon Urug Urugua uay y 201 2013 3 (em (em esp espanho anhol) l) DevDa De vDay20 y2013 13 Belo Belo Horizo Horizonte nte - MG Python para Zumbis – Ru RuPy Py Co Conf nfer eren ence ce 20 2013 13 Para gostar de Python – Python Nordeste 2013 e TDC 2013 Hoje sou um professor FELIZ – FISL 2013 Python for Zombies – FISL 2013 MongoD oDB B e Python – Python Nordeste 2013 NoSQL e Python – Ru RuPy Py Co Conf nfer eren ence ce 20 2012 12 I Love JSON Module – Python Brasil 2012 Pent entaho: aho: suite suite para BI JUG JUG Vale Vale 2012 2012 Cassandra NoSQL – JUG Vale 2012 Bench Ben chmar mark k LucidDB LucidDB x MySQL MySQL – NoSQL(br)/v2
CEDET Decolar
Casdinho
We Lo Lov ve Pyt Pytho hon n
We Lo Lov ve Pyt Pytho hon n •
• • • •
•
• •
Permite focar no problema, sem perder tempo na sintaxe Interativa Alta produtividade Baterias inclusas Comunidade Comunidade livre, forte, forte, diversificada, diversificada, alegre e acolhedora Orientada a objetos, funcional, estruturada Uso Uso ger geral al vs nic nicho hos s Simples de iniciar, sem esgotar
Eu domino domino uma uma lingua linguage gem m corpor corporati ativa va e o merca mercado do é meu, meu, quero quero você vocêss fora fora daqui. daqui.
O mercad mercado o é enorm enorme, e, não não tem sentid sentido o que que
We Lo Lov ve Pyt Pytho hon n
http://www.python.org/psf/diversity/
We Lo Lov ve Pyt Pytho hon n
Meta: 20 % de presença feminina em 2015 Fato: Fato: 20% dos congressist congressistas as PyConUS 2013! Fato: Fato: Um terço terço dos palestr palestrant antes es da PyConUS 2014!
We Lo Lov ve Pyt Pytho hon n
http://pyladies.com/
We Love Python
Meta: 25% não americanos em 2015
First pt-br programming MOOC
http://pycursos.com/python http://pycu rsos.com/python-para-zumbi -para-zumbis s/
Small interactive videos, no more blackboard and chalk
A lot of fun exercises
Edx MIT Cour Co urse sera ra In Inte tera ract ctiive Py Pyth thon on IME-USP Codingbat Google Python Class Crac Cr acki king ng Co Code de In Inte terv rvie iew w
7200 ins inscrip criptio tions! ns! and gr gro owin wing g...
We Lo Lov ve Pyt Pytho hon n He Hell llo o Wor orld ld
We Lo Lov ve Pyt Pytho hon n He Hell llo o Wor orld ld
Origem do nome Python
Python como um diferencial
The Python Parado Paradox x, Paul Graham
Python: quem usa
1h vide video/s o/s 4 b bill illion ion views views
Python: quem usa
Python: quem usa
Python: quem usa
Python: quem usa
Python: quem usa
Python: quem usa
Python: quem usa
Python: quem usa
Você sabia que o “ Pi” do nome se origina de Python?
Python: quem usa
Pop opul ular arid idad ade e Gi Gith thub ub e StackOverflow
Job obTr Tren ends ds In Inde deed ed.c .com om
Linguagem Linguag em do ano TIOBE em 2007 e 2010
Linguagem Favorita do LinuxJournal: 2009 a 2013
Linguagem Linguag em do ano TIOBE em 2007 e 2010
O que falam de Python
“ Se Se o Voldemort quisesse ser realmente imortal, ele teria programado uma horcrux recursiva em Python.” Harry Potter. Potter.
O que falam de Python
“A vida é melhor sem chaves“. “A vida é curta! Você precisa de Python”.
Python me ajuda ajuda a focar focar nos meus conceitos conceitos “ Python em vez de ficar brigando com a linguagem”. “Eu não preciso digitar muito. Mas o que eu digito é certo”.
Bruce Eckel , autor do best seller “ Thinking Thinking in Java” .
O que falam de Python
Entre todas as linguagens que eu aprendi, Python Py thon é a que menos interfere entre ” Entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações“. Autor “A “A catedral e o Bazar” Bazar”.. Eric Raymond , Autor
Contribu Contribuidor idor do GNU GNU Emac, Emac, Linux, Linux, Fetch Fetchmail mail.. Mantém o Jargonfile , mais conhecido como como “Dicionário “Dicionário dos Hackers” Hackers”
O que falam de Python
Python tem sido uma parte importante do Google desde o início , e permanece ” Python assim conforme o sistema cresce e evolui... estamos procurando por mais pessoas com com conhecimento conhecimento nessa linguagem“ linguagem“. Peter Norvig , diretor de qualidade qualidade de busca do Google Inc.
O que falam de Python
“[…] noss nossa a filo filoso sofi fia a aq aqui ui é “ Python Python sempre sempre que pudermos pudermos , C++ se necessário” ". ". Alex Martelli , Líder Técnico, Sistemas Sistemas de Produção, Produção, Google. Google.
O que falam de Python
“ Python permite produzir produzir Python é rápido rápido o suficien suficiente te para para o nosso nosso site e nos permite características características de fácil manutenção manutenção em tempos tempos recordes, recordes, com com um mínimo de Cuong g Do , Software Architect, YouT desenvolvedores” . Cuon YouTube.com ube.com
O que falam de Python
Python é uma das cinco mais importantes linguagens que todo todo programador “ Python deve conhecer” Bjarne Bjarne Stroustrup, Stroustrup, criador criador de C++
O que falam de Python
O que falam de Python
"Only ugly languages become popular. Python is the th e one exception exception" Don Knuth, walking to dinner after Alan Turing's Centenary Celebration (from @ivanov @ivanov on Twitt Twitter) er)
O que falam de Python
" Python Python poised to become the de facto engine for modern science" Joshua Bloom, Berkeley Berkeley Astronomy Astronomy Department, Department, at SciPy2012
Linguagem poderosa, mas simples de aprender
Neil Ibata, 15 anos, foi aprender a programar em Python com o pai e virou capa da revista Nature.
Python for Kids
Antonio: concluiu comigo o Coursera “Inter Interactiv active e Python Python with Games” Naomi: gosta gosta de Justin Justin Bieber Bieber e está estudando Python
Linguagem poderosa, mas simples de aprender
Programa de uma menina de 12 anos do Projeto CEDET Decolar
Doz Do ze cal calou our ros no Go Goog ogle le Dev De vel elop oper er Da Day y 20 2011 11
1º lugar fase regional maratona ACM- ICPC12
Twitter e Facebook nas aulas
Melhora da Auto Estima do Aluno
olha eu aiiii... kkk
Melhora da Auto Estima do Aluno
Tempo Para Ser Produtivo
C 2 anos Java 6 meses meses Python 1 mes
Expr Ex pres essi siv ve Power
Langua Lang uag ge C Java Python
State Sta teme ment nts s 1 2.5 6
Lin L ines es 1 1.5 6.5
Talk is cheap. Show me the code. Linus Torvalds
Check List •
•
•
•
•
•
•
Conta no Facebook Internet Python 3 IDLE ou semelhante Vamos fazer um um aqueciment aquecimento o Tutorial 1h em Python for Zombies (Vid ideo eo no You ouTu Tube be)) Curso completo free: Python para Zumbis
Aqu quec ecim imen ento to:: Ins Insta tall ll Py Pyth thon on 3 •
Windows –
–
•
Linux –
•
download exec executa utar r > next next > next. next..... sudo apt pt--get ins instal tall idl dle e-pyth tho on3.3
Mac OS X –
sudo port install python32
Aqu quec ecim iment ento: o: Us Using ing Py Pyth thon on 3 •
Windows –
•
Linux (terminal) –
•
Iniciar > Programas > Python3.3 > IDLE (Python GUI) idle-python3.3 &
Mac OS X (terminal) –
IDLE3.3 &
Aqu quec ecim iment ento: o: he hell llo o wor orld ld
No modo interativo você recebe a resposta para cada comando executado
Aquecimento: modo interativo •
•
•
•
•
•
•
•
2**100000 dir(“abacate”) help(“abacate”.upper) “abacate”.upper() a = “abacate” b = 42 a, b = b, a print (a, b) b)
Aquecimento: modo interativo •
•
•
•
•
•
•
import random random.randint(1, 100) random.randint(1, 100) random.choice(42, 13, 24, 7, 3, 10) prin printt (c (chr hr(3 (330 3000 00)) )) import this impo import rt anti antigr gra avity vity
Aquecimento: errando
No Python os espaços iniciais são importantes importantes
Aquecimento: errando
Stri St ring ng di dif fer eren ente te de de inte inteir iro o
Aqu quec ecim imen ento to:: editi edition on mo mode de
Module ou F5) No modo edição você precisa “rodar” o programa programa ( Run Module
Aqu quec ecim imen ento to:: editi edition on mo mode de
Aqu quec ecim imen ento to:: editi edition on mo mode de
Sempre use a extensão “. py” para não perder as cores do seu programa
Aquecimento: Aq uecimento: jogo simples
https://gist.github.com/fmasanori/6029123
Aquecimento: Aq uecimento: jogo simples
Feito por uma menina de 12 anos https://gist.github.com/5615826
for == == whi while le en enru rust stid ido o
Códigos equivalentes: equivalentes: for durant durante e o dia vira while à noite
for == == whi while le en enru rust stid ido o
Códigos equivalentes
for == == whi while le en enru rust stid ido o
Códigos equivalentes
Aquecimento: criptografia
Feito por outra menina de 12 anos
Dictionaries •
•
•
O dicionário em si consiste em relacionar uma chave a um valor específico Diferent Diferentemente emente das listas, onde o índice é um um número, número, dicionários utilizam suas chaves como índice Para Para adicionar novos elementos não preciso de append, basta fazer fazer a atribuição –
–
Se a chave já existe: o valor associado é alterado Se a chave não existe: a nova chave é adicionada
Dictionaries
Dictionaries
Dictionaries •
•
Faça um programa que leia o arquivo alice.txt e conte o número de ocorrências de cada palavra no texto. Obs.: para saber os import rt stri string ng e carac aractteres espe especi ciai aiss use use impo utilize string.punctuation http://www.gutenberg.org/cache/ http://www .gutenberg.org/cache/epub/11/pg epub/11/pg 11.txt
Dictionaries
https://gist.github.com/4673017
Raspagem fotos churras alunos
Raspagem fotos churras alunos
https://gist.github.com/6637873
JSON ki killer modul ule e
Java Scri Script pt Obje Object ct No Nota tati tion on •
•
•
•
•
•
http://json.org/ Independente de linguagem Pares nome/valor List Lista a orde dena nada da Muito adotado atualmente Alternativa para o XM XML –
–
Meno Menos s verb erbosa osa Maio Maior r legi legibi bili lida dade de
Chuc Ch uck k Nor Norris ris Ne Ner rdy Jok okes es
https://gist.github.com/4745061
Fac ace ebo book ok Ha Hac cki king ng
Fac ace ebo book ok Ha Hac cki king ng
Hackers não são “do mal”?
Fac ace ebo book ok Ha Hac cki king ng “O Facebook é dirigido por hackers. A maioria das pessoas pensa de um hacker como alguém que invade um sistema de computador. Mas nós vemos isso como uma filosofia. Aqui, os hackers assumem que sempre há uma maneira melhor, mais eficiente de resolver problemas.” facebook.com/careers facebook.com/careers (2012)
Fac ace ebo book ok Pr Prof ofil ile e
https://gist.github.com/4667205
Fac ace ebo book ok Pr Prof ofile ile Pho Photo to
https://gist.github.com/4667293
Graph API •
•
•
•
•
https://developers.facebook.com/do cs/reference/api/examples/ Objetos JSON Links autenticados Obs. Obs.:: acce access ss_t _tok oken en expi expira ra Autenticar novamente neste caso
Face cebo book ok Fr Frie iend nds s
Anote o formato
https://developers.facebook.com/docs/reference/api/examples/
Face cebo book ok Fr Frie iend nds s
Copie o access_token
https://developers.facebook.com/tools/explorer
Face cebo book ok Fr Frie iend nds s
https://gist.github.com/4674792
Facebook Friends Photos
https://gist.github.com/4684752
Android Wallpaper
Android Wallpaper
Fac ace ebo book ok Se Sear arc ch
https://gist.github.com/4684949
Fac ace ebo book ok Se Sear arc ch
Sentim ime ent Analysis (F (Fa acebook) •
•
•
Sabe o que é ter vontade vontade de acordar cedo no domingo para estudar?!? Bom, eu também não sei explicar, mas é o que estou sentindo no momento .-. Bora Casdinho!
Facebook Thanking (python 2.7)
https://gist.github.com/8696746
Facebook Thanking (python 2.7)
https://gist.github.com/8696746
Participantes de um evento qualquer •
•
•
Hackea Hackear r partic participa ipante ntes s a part partir ir do do evento evento criado no Facebook Facebook Inserir link para o perfil perfil pessoal no Facebook Obs.: somente alguns participantes e com a foto na data do evento
Reddit MongoDB Client (tribut (tribute e to Aaron Aaron Swar Swartz, tz, cofo cofounde underr of Reddit Reddit,, nov-198 nov-1986, 6, jan-2013 jan-2013))
Reddit Client
(by (by 10ge 10gen) n)
https://gist.github.com/4691077
Reddit Client
MongoDB == JSON
Flexib xible Schema
Relational DB
Reddit MongoDB Client
Reddit MongoDB Client
Games com Python no browser
http://www.codeskulptor.org/#demos-pyman.py
Games com Python no browser
Rice Rocks (Asteroids) https://gist.github.com/fmasanori/6042315
Slides e videos •
•
Python for Zombies Hackeando o Fa Face ceb boo k e o Twitter com Python 3
Links para iniciar Twitter Dev API Facebook Dev How To Facebook Dev Pictures Facebook Dev Search Facebook Dev Examples/ Facebook Dev Getting Started
Material para aprofundamento
Material para aprofundamento
Obs.: o autor já anunciou a segunda edição, aguardem...
Material para aprofundamento
Material para aprofundamento
Material para aprofundamento
Material para aprofundamento
Web Scraping
http://pyvideo.org/video/609/web-scrapingreliably-and-efficiently-pull-data
Python para Zumbis (gratuito)
http://beta.pycursos.com/python-para-zumbis/
Perguntas?
[email protected] facebook.com/fmasanori
twitter.com/fmasanori
Ace cess sso o Tw Twit itte ter r Aut utent entic icad ado o •
•
•
Até Até junho de d e 2013 era possível acessar várias informaç informações ões do Twit Twitter ter sem necessidade necessidade de autenticação O Twit Twitter ter resolveu resolveu melhor melhorar ar a segurança segurança e utilizar utilizar OAuth OAuth (Open Authent Authentica ication) tion) até até o acesso básico (search) Neste protocolo, recebemos uma chave e senha que permite permite o acesso a um recurso recurso específico durante durante algum algu m tempo
Ace cess sso o Tw Twit itte ter r Aut utent entic icad ado o •
•
•
O usuário do Twitt Twitter er precisa precisa autoriz autorizar ar um programa programa externo, que recebe um consumer_k consumer_key ey e um consumer_secr consumer_secret et Na posse dessa chave e senha podemos pegar uma chave e senha de acesso temporária Não se preocupe se você não entender o Tweepy. Ano passado era mais simples e só recentemente recentemente ficou mais complicado acessar o Twitter
Obtendo Chave e Senha de Acesso
Obtendo Chave e Senha de Acesso
Obtendo Chave e Senha de Acesso
Obtendo Chave e Senha de Acesso
Enviando mensagens
Enviando mensagens
Mensagens dos meus alunos