oficina python: hackeando a web com python 3

Post on 18-Dec-2014

3.270 Views

Category:

Technology

23 Downloads

Preview:

Click to see full reader

DESCRIPTION

Workshop realizado na II Edição do Talk a Bit no CIN/UFPE. Em 30.11.2013

TRANSCRIPT

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

PopularidadeLinguagem 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/pg11.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/docs/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 RelacionalRelational 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 AutenticadoObtendo 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 CasaMaterial 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

top related