Buscar

Hackeando a Web com Python 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 122 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 122 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 122 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Hackeando a Web com 
Python 3
Marcel Caraciolo 
@marcelcaraciolo	
Desenvolvedor, Cientista, Instrutor, co- fundador do PyCursos,	
contribui com projetos open-source na área de ML,	
trabalha com Python há 6 anos, interessado em mobile,	
educação, machine learning and dadoooossss!	
Recife, Brazil - http://aimotion.blogspot.com
http://bit.ly/IxkwD4
Quem é Marcel ?
Este sou eu!
Tutorial para 
iniciantes!
Material adaptado dos Slides do Professor 
Fernando Masanori!
!
!
!
www.slideshare.net/fmasanori/hackeando-o-
facebook-e-o-twitter-com-python-3-
campus-party-2013
Agenda
• Intro ao Python 3 
Brincando com Facebook
Brincando com Reddit & MongoDB
Brincando com Open Data & Twitter
Material para Casa 
Brincando com Foursquare
Conhecendo a audiência
• Professores
Estudantes
Sabem programar
Profissionais de TI
Sabem programar em Python
Primeiro prêmio
We love Python!
	
•	
Permite focar no problema, sem perder tempo na sintaxe 	
	
•	
Interativa 	
	
•	
Alta produtividade 	
	
•	
Baterias inclusas 	
	
•	
Comunidade livre, forte, diversificada, alegre e acolhedora 	
	
•	
Orientada a objetos, funcional, estruturada 	
	
•	
Uso geral vs nichos 	
	
•	
Simples de iniciar, sem esgotar 	
We Love Python 
http://www.python.org/psf/diversity/ 
We Love Python 
Meta: 20 % de presença feminina em 2015 
We Love Python 
Meta: 25% não americanos em 2015 
We Love Python 
We Love Python Hello World 
We Love Python Hello World 
Origem do nome Python 
1h video/s 4 billion views 
Python: quem usa Quem usa ?
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa 
Quem usa ?Python: quem usa Python: quem usa 
Quem usa ?Python: quem usa 
Você  sabia  que  o  “Pi”  do  nome  se  origina  de  Python? 
Quem usa ?
Python: quem usa 
PopularidadePopularidade Github e 
StackOverflow 
PopularidadeJobTrends Indeed.com 
PopularidadeLinguagem do ano TIOBE em 
2007 e 2010 
Linguagem Favorita do 
LinuxJournal: 2009 a 2012 
Popularidade
Linguagem do ano TIOBE em 
2007 e 2010 
O que falam de Python ? 
 
 
 
 
 
 
 
 
 
 
 
 
“Se o Voldemort quisesse ser realmente imortal, ele teria 
programado uma horcrux recursiva  em  Python.”  Harry Potter. 
O que falam de Python 
O que falam de Python ? 
 
 
 
 
 
 
 
 
“A vida é melhor sem chaves“. 
“A  vida  é  curta!  Você  precisa  de  Python”. 
“Python me ajuda a focar nos meus conceitos 
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 in  Java”. 
O que falam de Python 
O que falam de Python ? 
 
 
 
 
 
 
 
 
 
 
 
“Python é uma das cinco mais importantes linguagens que todo programador 
deve  conhecer”  Bjarne Stroustrup, criador de C++ 
O que falam de Python 
Simples de Aprender 
Neil Ibata, 15 anos, foi aprender a programar em 
Python com o pai e virou capa da revista Nature. 
Linguagem poderosa, mas 
simples de aprender 
Simples de Aprender 
Programa de uma menina de 12 
anos do Projeto CEDET Decolar 
Linguagem poderosa, mas 
simples de aprender 
Tempo para ser produtivo 
C 2 anos 
Java 6 meses 
Python 1 mes 
Tempo Para Ser Produtivo 
Poder de Expressividade Expressive Power 
Language Statements Lines 
C 1 1 
Java 2.5 1.5 
Python 6 6.5 
Segundo prêmio
• Conta no Facebook 
• Internet 
• Python 3 
• IDLE ou semelhante 
• Vamos fazer um aquecimento 
• Tutorial completo da linguagem 
em Python for Zombies (YouTube) 
 
Check List 
Aquecimento: Install Python 3 
• Windows 
– download 
– executar > next > next... 
• Linux 
– sudo apt-get install idle-python3.3 
• Mac OS X 
– sudo port install python32 
 
Aquecimento: Using Python 3 
• Windows 
– Iniciar > Programas > Python3.3 > 
IDLE (Python GUI) 
• Linux (terminal) 
– idle-python3.3 & 
• Mac OS X (terminal) 
– IDLE3.3 & 
 
Aquecimento: hello world 
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) 
 
Aquecimento: modo interativo 
• import random 
• random.randint(1, 100) 
• random.randint(1, 100) 
• random.choice(42, 13, 24, 7, 3, 10) 
• print (chr(33000)) 
• import this 
• import antigravity 
 
 
Aquecimento: errando 
No Python os espaços iniciais são importantes 
Aquecimento: errando 
String diferente de inteiro 
Aquecimento: edition mode 
No  modo  edição  você  precisa  “rodar”  o  programa  (Run Module ou F5) 
Aquecimento: edition mode 
Aquecimento: edition mode 
Sempre  use  a  extensão  “.py”  para  não  perder  as  cores  do  seu  programa 
Aquecimento: jogo simples 
https://gist.github.com/fmasanori/6029123 https://gist.github.com/marcelcaraciolo/7715647
https://gist.github.com/marcelcaraciolo/7715664
for == while enrustido 
Códigos equivalentes: for durante o dia vira while à noite 
for == while enrustido 
Códigos equivalentes 
for == while enrustido 
Códigos equivalentes 
Aquecimento: criptografia 
Feito por outra 
menina de 12 anos 
• O dicionário em si consiste em relacionar uma 
chave a um valor específico 
• Diferentemente das listas, onde o índice é um 
número, dicionários utilizam suas chaves 
como índice 
• Para adicionar novos elementos não preciso 
de append, basta 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 
caracteres especiais use import string e 
utilize string.punctuation 
• http://www.gutenberg.org/cache/epub/11/pg
11.txt 
Dictionaries 
http://www.gutenberg.org/cache/epub/11/pg11.txt
Dictionaries 
https://gist.github.com/4673017 https://gist.github.com/marcelcaraciolo/7715709
JSON killer module JSON Killer!
• http://json.org/ 
• Independente de linguagem 
• Pares nome/valor 
• Lista ordenada 
• Muito adotado atualmente 
• Alternativa para o XML 
– XML mais verbosa 
– XML menor legibilidade 
 
 
Java Script Object Notation JavaScript Object Notation
Chuck Norris Nerdy Jokes
https://gist.github.com/4745061 
Chuck Norris Nerdy Jokes 
https://gist.github.com/marcelcaraciolo/7715734
Facebook Hacking 
 
 
 
 
 
 
 
 
 
 
Hackers não são  “do  mal”? 
 
 
Facebook Hacking 
 
 
 
 
 
 
 
 
 
 
“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 (2012) 
Facebook Hacking 
{'first_name': 'Marcel',!
 'gender': 'male',!
 'id': '100000202630360',!
 'last_name': 'Caraciolo',!
 'link': 'http://www.facebook.com/marcel.caraciolo',!
 'locale': 'en_US',!
 'name': 'Marcel Caraciolo',!
 'username': 'marcel.caraciolo'}https://gist.github.com/marcelcaraciolo/7715741
https://gist.github.com/marcelcaraciolo/7715760
• https://developers.facebook.com/do
cs/reference/api/examples/ 
• Objetos JSON 
• Links autenticados 
• Obs.: access_token expira 
• Autenticar novamente neste caso 
Graph API 
Anote o formato!
https://developers.facebook.com/docs/reference/api/
examples/
Copie o access token!
https://developers.facebook.com/tools/explorer
Copie o access token!
https://developers.facebook.com/tools/explorer
https://gist.github.com/4674792 
Facebook Friends 
https://gist.github.com/marcelcaraciolo/7715831
https://gist.github.com/4684752 
Facebook Friends Photos 
https://gist.github.com/marcelcaraciolo/7715862
Android 
Wallpaper 
Android 
Wallpaper 
https://gist.github.com/marcelcaraciolo/7715921
Maria Luiza: Como se o evento não já estivesse bom, o CITi ainda melhora !!!!!
#talkabit #Euvou!
!
Victor Maristane: Garoto Propaganda do Talk a Bit no NE10, hehehe!
!
(A propósito, não deixem de se inscrever no Talk a Bit++: http://citi.org.br/talkabit :), essa edição vai 
conseguir ser absurdamente melhor :DD)!
!
Jader Anderson: Boa filosofia para um encontro: Lean, Code e Play.!
!
http://citi.org.br/talkabit/!
!
Maria Luiza: Eu não sei se te contei MAS, o Talk a Bit custa apenas R$ 16,00 e já é dia 30/11. Vai ficar de 
fora é ??!
Se inscreve logo:!
http://citi.org.br/talkabit/
Idéias para o futuro ?! Análise de Sentimentos!
(tribute to Aaron Swartz, cofounder of Reddit, nov-1986, jan-2013) 
Reddit MongoDB Client 
https://gist.github.com/4691077 
(by 10gen) 
Reddit Client 
https://gist.github.com/marcelcaraciolo/7716004
Question: cx_freeze “zlib not avaiable” error when using multiple threads 
#comments: 3 
http://www.reddit.com/r/Python/comments/1ro891/question_cx_freeze_zlib_not_avaiable_error_when/ 
!
Python Selenium - Open new tab / focus tab / close tab 
#comments: 9 
http://www.reddit.com/r/Python/comments/1rmg4n/python_selenium_open_new_tab_focus_tab_close_tab/ 
!
Python 3 gets some credit for how it chose to handle Unicode compared to other languages 
#comments: 24 
http://mortoray.com/2013/11/27/the-string-type-is-broken/ 
!
I am having too much trouble installing pygame. 
#comments: 1 
http://www.reddit.com/r/Python/comments/1rnxnq/i_am_having_too_much_trouble_installing_pygame/ 
!
Not exclusively Python, but a nice tool to generate regex code in multiple languages. 
#comments: 13 
http://txt2re.com/ 
!
Setting up a (web) development environment 
#comments: 11 
http://www.reddit.com/r/Python/comments/1rnfle/setting_up_a_web_development_environment/ 
!
Building a Flask Blog: Part2 
#comments: 2 
http://pypix.com/python/building-flask-blog-part2/
Flexible Schema 
MongoDB == JSON 
MongoDB == BSON
Banco Relacional
Relational DB 
Reddit MongoDB Client 
https://gist.github.com/marcelcaraciolo/7716030
Reddit MongoDB Client 
Foursquare & TagCloud
Foursquare & TagCloud's
Checklist
1. Instalar pygame
2. Instalar simplejson
3. Instalar pytagcloud
https://developer.foursquare.com/docs/
https://developer.foursquare.com/docs/venues/search
https://developer.foursquare.com/docs/venues/tips
https://gist.github.com/marcelcaraciolo/7717945
Delta Expresso
Twitter & OpenData
Twitter & OpenData
Checklist
1. tweepy
Acesso Twitter Autenticado
• Até junho de 2013 era possível acessar várias 
informações do Twitter sem necessidade de 
autenticação 
• O Twitter resolveu melhorar a segurança e 
utilizar OAuth (Open Authentication) até o 
acesso básico (search) 
• Neste protocolo, recebemos uma chave e 
senha que permite o acesso a um recurso 
específico durante algum tempo 
Acesso Twitter Autenticado 
Acesso Twitter Autenticado
• O usuário do Twitter precisa autorizar um 
programa externo, que recebe um 
consumer_key e um consumer_secret 
• 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 ficou mais complicado acessar 
o Twitter 
Acesso Twitter Autenticado 
Acesso Twitter Autenticado
Obtendo Chave e Senha de Acesso 
https://dev.twitter.com/
Acesso Twitter AutenticadoObtendo Chave e Senha de Acesso 
Acesso Twitter Autenticado
Acesso Twitter AutenticadoEnviando mensagens 
Enviando mensagens!
Lendo API do Transito Recife
Lendo API do Transito Recife
http://www.recife.pe.gov.br/transito/recuperarPontos.aspx
https://gist.github.com/marcelcaraciolo/7717717
Lendo API do Transito Recife
Material para Casa
Twitter Dev API
Facebook Dev API
Foursquare API
Portal Transparencia
Material para CasaMaterial para aprofundamento 
http://www.novatec.com.br/livros/python-cookbook/
Material para CasaMaterial para aprofundamento 
Obs.: o autor já anunciou a segunda edição, aguardem... 
Material para CasaMaterial para aprofundamento 
Obs.: o autor já anunciou a segunda edição, aguardem... 
Material para CasaMaterial para aprofundamento 
Material para CasaMaterial para aprofundamento 
Material para CasaMaterial para aprofundamento 
Material para Casa
Material para aprofundamento 
Web Scraping 
http://pyvideo.org/video/609/web-scraping-
reliably-and-efficiently-pull-data 
Material para Casa
http://beta.pycursos.com/python-para-zumbis/ 
Python para Zumbis (gratuito) 
http://pycursos.com/python-para-zumbis
Hackeando a Web com 
Python 3
Marcel Caraciolo 
@marcelcaraciolo	
Desenvolvedor, Cientista, Instrutor, co- fundador do PyCursos,	
contribui com projetos open-source na área de ML,	
trabalha com Python há 6 anos, interessado em mobile,	
educação, machine learning and dadoooossss!	
Recife, Brazil - http://aimotion.blogspot.com

Outros materiais