Sei sulla pagina 1di 122

Hackeando a Web com

Python 3
http://bit.ly/IxkwD4

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
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 Foursquare
Brincando com Open Data & Twitter
Material para Casa
Conhecendo a audiência
Professores
Estudantes
Profissionais de TI
Sabem programar
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


Quem
Python: usausa
quem ?

1h video/s 4 billion views


Quem
Python: usa ?usa
quem
Quem usa ?
Python: quem usa
Quem
Python: usausa
quem ?
Quem usa ?
Python: quem usa
Quem
Python: usa usa
quem ?
Quem
Python: usa usa
quem ?
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
Popularidade
Popularidade Github e
StackOverflow
Popularidade
JobTrends Indeed.com
Popularidade
Linguagem do ano TIOBE em
2007 e 2010

Linguagem Favorita do
Popularidade
Linguagem do ano TIOBE em
2007 e 2010
O
O que falam de
que falam dePython
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++
Simples de
Linguagem Aprender
poderosa, mas
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
Simplesde
simples deaprender
Aprender

Programa de uma menina de 12


anos do Projeto CEDET Decolar
Tempo para ser produtivo
Tempo Para Ser Produtivo

C 2 anos
Java 6 meses
Python 1 mes
Poder de Expressividade
Expressive Power

Language Statements Lines


C 1 1
Java 2.5 1.5
Python 6 6.5
Segundo prêmio
Check List

• Conta no Facebook
• Internet
• Python 3
• IDLE ou semelhante
• Vamos fazer um aquecimento
• Tutorial completo da linguagem
em Python for Zombies (YouTube)
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
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

Sempre  use  a  extensão  “.py”  para  não  perder  as  cores  do  seu  programa
Aquecimento: jogo simples

https://gist.github.com/marcelcaraciolo/7715647
https://gist.github.com/fmasanori/6029123
https://gist.github.com/marcelcaraciolo/7715664
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
Dictionaries

• 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

• 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

http://www.gutenberg.org/cache/epub/11/pg11.txt
https://gist.github.com/4673017
https://gist.github.com/marcelcaraciolo/7715709
JSON Killer!
JSON killer module
Java Script Object Notation
JavaScript Object Notation
• http://json.org/
• Independente de linguagem
• Pares nome/valor
• Lista ordenada
• Muito adotado atualmente
• Alternativa para o XML
– XML mais verbosa
– XML menor legibilidade
Chuck
Chuck Norris Nerdy
Norris Nerdy Jokes
Jokes

https://gist.github.com/marcelcaraciolo/7715734
https://gist.github.com/4745061
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)
{'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
Graph API

• https://developers.facebook.com/do
cs/reference/api/examples/
• Objetos JSON
• Links autenticados
• Obs.: access_token expira
• Autenticar novamente neste caso
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
Facebook Friends

https://gist.github.com/marcelcaraciolo/7715831

https://gist.github.com/4674792
Facebook Friends Photos

https://gist.github.com/4684752
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!


Reddit MongoDB Client
(tribute to Aaron Swartz, cofounder of Reddit, nov-1986, jan-2013)
Reddit Client

(by 10gen)

https://gist.github.com/marcelcaraciolo/7716004
https://gist.github.com/4691077
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/
MongoDB == BSON
MongoDB == JSON

Flexible Schema
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
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
Obtendo Chave e Senha de Acesso

https://dev.twitter.com/
Obtendo Chave e Senha de Acesso
Acesso Twitter Autenticado
Acesso Twitter Autenticado
Acesso Twitter
Enviando Autenticado
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

Facebook Dev API


Twitter Dev API
Foursquare API
Portal Transparencia
Material para Casa
Material para aprofundamento

http://www.novatec.com.br/livros/python-cookbook/
Material
Material para Casa
para aprofundamento

Obs.: o autor já anunciou a segunda edição, aguardem...


Material
Material para Casa
para aprofundamento

Obs.: o autor já anunciou a segunda edição, aguardem...


Material
Material parapara Casa
aprofundamento
Material para Casa
Material para aprofundamento
Material para Casa
Material 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
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

Potrebbero piacerti anche