Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Java NET:
Interaja com a Internet
Ricardo Terra
rterrabh [at] gmail.com
Java NET: Interaja com a Internet 1
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
Java NET: Interaja com a Internet 2Maio, 2011
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Objetivo do Mini-curso
§  Entendendo o Funcionamento da Web
§  HTTPS
§  Entendendo File e Stream
§  API Java Net
§  Baixar o conteúdo de um recurso (página, imagem etc)
§  Submeter formulários
§  Ataque por Força Bruta
§  Desenvolvimento de Aplicações
§  MyDownload
§  MyPageChecker
3
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Entendendo o
Funcionamento da Web
Java NET: Interaja com a Internet 4
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Funcionamento da Web – HTTP e HTML
§  A maioria das conversas que ocorre na web entre clientes e
servidores são mantidas através do protocolo HTTP, que
possibilita conversas de requisição e resposta
§  O cliente envia uma requisição HTTP e o servidor retorna uma
resposta HTTP
§  Enfim, se você é um servidor web você fala HTTP
§  Portanto, uma conversação HTTP é uma sequência de
requisição/resposta
§  Isto é, o cliente pede uma coisa, o servidor responde, o cliente pede
outra coisa, o servidor responde...
5
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Funcionamento da Web
§  Requisição e resposta:
6
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Cliente e Servidor / HTTP e HTML
§  Quando um servidor responde a uma solicitação, ele geralmente
envia algum tipo de conteúdo para o browser, para que esse
possa exibí-lo
§  O formato HTML é o formato mais comum enviado como resposta
para um cliente pelo Servidor, pois esse é facilmente lido pelo
browser no cliente
§  Informação presente no content-type no cabeçalho HTTP
§  text/html!
§  text/plain!
§  application/pdf!
§  image/jpeg!
§  ... !
7
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Cliente e Servidor / HTTP e HTML
§  O HTTP é um protocolo da camada de aplicação que tem
características específicas para a web, mas ele depende de toda
a arquitetura TCP/IP para garantir que tanto a solicitação e
quanto a resposta sejam transmitidas entre o cliente e o servidor
TOPO DO TCP/IP
8
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Principais elementos do fluxo de requisição:
§  método HTTP
§  endereço da página (URL) que está sendo acessada
§  parâmetros do formulário
§  Principais elementos do fluxo de resposta:
§  cabeçalho
§  código de status
§  Método HTTP
§  tipo do conteúdo (texto, imagem, HTML...)
§  conteúdo (o texto, a imagem, o HTML...)
9
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Requisição HTTP
§  A primeira coisa que você encontrará é o nome do método HTTP
§  O nome do método informa ao servidor o tipo de solicitação que está
sendo feita e como o resto da mensagem será formatada.
§  O protocolo HTTP possui diversos métodos, mas usaremos e
aprenderemos os mais comuns: GET e POST
10
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Método GET
§  É o método mais simples do HTTP e seu principal trabalho é pedir
um recurso
§  Pode ser qualquer tipo de recurso: uma página, uma imagem, um PDF,
etc
§  O caminho até o recurso e quaisquer parâmetros adicionados à
URL serão incluídos na própria barra de endereços
§  Podemos usar o GET para formulários, porém com desvantagens:
§  O total de caracteres do GET é limitado
§  Os dados que você envia utilizando HTTP GET são anexados à URL,
portanto, seja o que for que você estiver transmitindo, ficará exposto
11
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Método POST
§  É um método mais poderoso. É um GET++. Com o POST, você
pode solicitar algo e, ao mesmo tempo, enviar os dados de um
formulário para o servidor
§  Os dados a serem enviados ao servidor estão localizados na carga
útil (payload) da mensagem e podem ser bem extensos
Pacote IPv4
§  Por isto, o POST é considerado mais seguro que o GET
12
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Enfim, para acesso a recursos utiliza-se GET e aplicações que
utilizam formulários utiliza-se POST
13
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Requisição e resposta
§  Resposta HTTP
§  uma resposta HTTP é composta de um cabeçalho (header) e o
corpo
§  o cabeçalho informa ao browser o método que está sendo utilizado, se
a solicitação obteve êxito (código) e o tipo de conteúdo está incluído no
corpo
§  corpo possui o conteúdo (por exemplo, HTML) que o browser exibirá
§  o código pode ser:
§  1xx: Informativa: requisição recebida, processo em continuidade…
§  2xx: Sucesso: a ação foi recebida, entendida e aceita com sucesso
§  3xx: Redirecionamento: ação futura ainda deve ser tomada para
completar a requisição
§  4xx: Erro no cliente: requisição contém sintaxe incorreta ou não pode
ser resolvida
§  5xx: Erro no servidor: O servidor falhou ao responder uma aparente
requisição válida
14
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 15Java NET: Interaja com a Internet
HTTPS
§  E o HTTPS? Se utilizarmos, nossa aplicação é segura?!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Entendendo File e Stream
Java NET: Interaja com a Internet 16
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
API Java Net
§  Antes de entrarmos na API Java Net, os seguintes pré-requisitos
devem ser abordados:
§  Classe File
§  Streams
§  Assim, esta seção apresenta uma visão geral desses assuntos
17
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Classe java.io.File!
§  Classe responsável em realizar métodos em arquivos físicos.
Para se construir um objeto do tipo File, deve saber o nome
completo do arquivo. Caso o arquivo esteja na raiz do
workspace pode apenas passar o nome do arquivo
§  Caso se passe o nome de um arquivo que não existe, este é
criado na primeira necessidade
§  Exemplo:
§  new File("C:pastameuArquivo.txt")!
§  new File("meuArquivoNoWorkspace.txt")!
§  new File(”/dev/etc/xpto.txt”)!
§  new File(”/bin")!
Java NET: Interaja com a Internet 18
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Classe java.io.File
§  Trabalhando com um arquivo:
File fileTexto = new File("arquivoTexto.txt");!
!System.out.println("Nome do arquivo: " + fileTexto.getName());!
!System.out.println("O arquivo existe? " + fileTexto.exists());!
!System.out.println(”Diretório? " + fileTexto.isDirectory());!
!if (fileTexto.isFile()) {!
! !System.out.println("É um arquivo do diretório: " !
! ! !+ fileTexto.getAbsolutePath());!
!}!
!System.out.println("Posso ler? " + fileTexto.canRead());!
! S y s t e m . o u t . p r i n t l n ( " P o s s o e s c r e v e r ? " +
fileTexto.canWrite());!
§  Enfim, classe File não manipula arquivos...
§  Então, quem manipula?! Streams...
!
Java NET: Interaja com a Internet 19
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§  Java fornece uma interface consistente ao programador,
independente do dispositivo real que é acessado
§  Essa abstração é chamada stream e o dispositivo real
pode ser:
§  arquivo (file)
§  impressora
§  socket
§  Internet
§  …
§  Em outras palavras, você trabalha com qualquer
dispositivo do mesmo modo (com certas limitações)
Java NET: Interaja com a Internet 20
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§  Basicamente, existem dois principais tipos de streams:
§  stream de texto
§  Manipula caracteres
§  Leitura: Reader!
§  Escrita: Writer!
§  stream binário
§  Manipula bytes
§  Leitura: InputStream!
§  Escrita: OutputStream
Java NET: Interaja com a Internet 21
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams!
Java NET: Interaja com a Internet 22
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§  Devido ao foco do curso, não colocarei exemplos de uso
§  O conhecimento necessário será absorvido durante as
explicações da próxima seção (on-the-fly)
Java NET: Interaja com a Internet 23
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
Java NET: Interaja com a Internet 24
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§  API completa desenvolvida pela Oracle / Sun para acessos
à Internet
§  Com essa API podemos:
§  Buscar recursos web (página HTML, por exemplo)
§  Submeter formulários
§  Nos próximos slides veremos alguns exemplos básicos da
utilização dessa API
Java NET: Interaja com a Internet 25
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§  Acessando um site
§  Lendo do InputStream da URLConnection!
§  Projeto JavaNet: com.terra.exemplos.RecursoHTML!
§  O conteúdo retornado é uma HTML, isto é, texto!
§  Logo, qual o papel de um browser?
Java NET: Interaja com a Internet 26
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§  Só com o que já sabemos, podemos baixar qualquer
conteúdo e salvá-lo em disco (espécie de um programa de
download)
§  Baixando um recurso (imagem ou pdf, por exemplo):
§  Lendo do InputStream da URLConnection
§  Escrevendo no OutputStream de um arquivo!
§  Projeto JavaNet: com.terra.exemplos.SalvarRecurso!
Java NET: Interaja com a Internet 27
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§  Submetendo um formulário
§  Descobrir url do formulário e nome dos seus campos
§  Antes da submissão
§  Uso de URLEncoder para passagem de parâmetros
§  Escrita no OutputStream da URLConnection!
§  Depois da submissão
§  Lendo do InputStream da URLConnection!
§  Projeto JavaNet: com.terra.exemplos.Formulario!
Java NET: Interaja com a Internet 28
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Ataque por Força Bruta
Java NET: Interaja com a Internet 29
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Força Bruta
§  Tentar todas as possibilidades...
30
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Força Bruta
§  Exemplo Motivador: SINEF
§  Técnicas para evitar
§  Limite de Tentativas
§  Você utilizou 5 tentativas. Usuário bloqueado.
§  Tempo de Ociosidade
§  Você utilizou 5 tentativas. Usuário bloqueado por 30 minutos.!
§  Imagem
31
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Força Bruta
§  Como fazer?
§  Descobrir o formulário e o nome do seus campos
§  Bolar um algoritmo para gerar todas as combinações
§  Ir tentando…
§  Tome cuidado que é possível descobrí-lo pelo seu IP
§  Não use para o mal:
§  www.peladeiro.com.br
§  qualquer outro... deixo com vocês...
Java NET: Interaja com a Internet 32
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
Java NET: Interaja com a Internet 33
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§  Acho que já foi possível notar que o mais legal da API
Java Net não é acessar à Internet, mas sim, as aplicações
que pode gerar
§  Nesta seção, faremos a criação de dois aplicativos:
§  MyDownload
§  Programa para fazer download pela Internet
§  MyPageChecker
§  Programa para verificar se houve alterações em
uma determinada página
Java NET: Interaja com a Internet 34
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§  MyDownload
§  Programa para fazer download pela Internet
§  Algo como:
§  Pacotes:
§  com.terra.mydownload.{thread,gui,main}!
Java NET: Interaja com a Internet 35
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§  MyPageChecker
§  Programa para verificar se houve alterações em uma
determinada página
§  Algo como:
§  Pacotes:
§  com.terra.mypagechecker.{thread,gui,main}!
Java NET: Interaja com a Internet 36
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Considerações Finais
Java NET: Interaja com a Internet 37
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Considerações Finais
§  Use para o BEM!!!
38
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Dúvidas?
???
39
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011Java NET: Interaja com a Internet
Ricardo Terra
rterrabh [at] gmail.com
Apresentação e projeto Java disponíveis em:
www.ricardoterra.com.br/palestras
Principais referências bibliográficas:
HORSTMANN, C; CORNELL, G. Core Java: Volume 1 – Fundamentos.
8 ed. São Paulo: Pearson, 2010.
DEITEL, P; DEITEL, H. Java: Como Programar. 8 ed. São Paulo:
Pearson, 2010.
Obrigado!
40

Java Net: Interagindo com a Internet

  • 1.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet Ricardo Terra rterrabh [at] gmail.com Java NET: Interaja com a Internet 1
  • 2.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos) Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano) Java NET: Interaja com a Internet 2Maio, 2011
  • 3.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Objetivo do Mini-curso §  Entendendo o Funcionamento da Web §  HTTPS §  Entendendo File e Stream §  API Java Net §  Baixar o conteúdo de um recurso (página, imagem etc) §  Submeter formulários §  Ataque por Força Bruta §  Desenvolvimento de Aplicações §  MyDownload §  MyPageChecker 3
  • 4.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Entendendo o Funcionamento da Web Java NET: Interaja com a Internet 4
  • 5.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Funcionamento da Web – HTTP e HTML §  A maioria das conversas que ocorre na web entre clientes e servidores são mantidas através do protocolo HTTP, que possibilita conversas de requisição e resposta §  O cliente envia uma requisição HTTP e o servidor retorna uma resposta HTTP §  Enfim, se você é um servidor web você fala HTTP §  Portanto, uma conversação HTTP é uma sequência de requisição/resposta §  Isto é, o cliente pede uma coisa, o servidor responde, o cliente pede outra coisa, o servidor responde... 5
  • 6.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Funcionamento da Web §  Requisição e resposta: 6
  • 7.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Cliente e Servidor / HTTP e HTML §  Quando um servidor responde a uma solicitação, ele geralmente envia algum tipo de conteúdo para o browser, para que esse possa exibí-lo §  O formato HTML é o formato mais comum enviado como resposta para um cliente pelo Servidor, pois esse é facilmente lido pelo browser no cliente §  Informação presente no content-type no cabeçalho HTTP §  text/html! §  text/plain! §  application/pdf! §  image/jpeg! §  ... ! 7
  • 8.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Cliente e Servidor / HTTP e HTML §  O HTTP é um protocolo da camada de aplicação que tem características específicas para a web, mas ele depende de toda a arquitetura TCP/IP para garantir que tanto a solicitação e quanto a resposta sejam transmitidas entre o cliente e o servidor TOPO DO TCP/IP 8
  • 9.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Principais elementos do fluxo de requisição: §  método HTTP §  endereço da página (URL) que está sendo acessada §  parâmetros do formulário §  Principais elementos do fluxo de resposta: §  cabeçalho §  código de status §  Método HTTP §  tipo do conteúdo (texto, imagem, HTML...) §  conteúdo (o texto, a imagem, o HTML...) 9
  • 10.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Requisição HTTP §  A primeira coisa que você encontrará é o nome do método HTTP §  O nome do método informa ao servidor o tipo de solicitação que está sendo feita e como o resto da mensagem será formatada. §  O protocolo HTTP possui diversos métodos, mas usaremos e aprenderemos os mais comuns: GET e POST 10
  • 11.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Método GET §  É o método mais simples do HTTP e seu principal trabalho é pedir um recurso §  Pode ser qualquer tipo de recurso: uma página, uma imagem, um PDF, etc §  O caminho até o recurso e quaisquer parâmetros adicionados à URL serão incluídos na própria barra de endereços §  Podemos usar o GET para formulários, porém com desvantagens: §  O total de caracteres do GET é limitado §  Os dados que você envia utilizando HTTP GET são anexados à URL, portanto, seja o que for que você estiver transmitindo, ficará exposto 11
  • 12.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Método POST §  É um método mais poderoso. É um GET++. Com o POST, você pode solicitar algo e, ao mesmo tempo, enviar os dados de um formulário para o servidor §  Os dados a serem enviados ao servidor estão localizados na carga útil (payload) da mensagem e podem ser bem extensos Pacote IPv4 §  Por isto, o POST é considerado mais seguro que o GET 12
  • 13.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Enfim, para acesso a recursos utiliza-se GET e aplicações que utilizam formulários utiliza-se POST 13
  • 14.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Requisição e resposta §  Resposta HTTP §  uma resposta HTTP é composta de um cabeçalho (header) e o corpo §  o cabeçalho informa ao browser o método que está sendo utilizado, se a solicitação obteve êxito (código) e o tipo de conteúdo está incluído no corpo §  corpo possui o conteúdo (por exemplo, HTML) que o browser exibirá §  o código pode ser: §  1xx: Informativa: requisição recebida, processo em continuidade… §  2xx: Sucesso: a ação foi recebida, entendida e aceita com sucesso §  3xx: Redirecionamento: ação futura ainda deve ser tomada para completar a requisição §  4xx: Erro no cliente: requisição contém sintaxe incorreta ou não pode ser resolvida §  5xx: Erro no servidor: O servidor falhou ao responder uma aparente requisição válida 14
  • 15.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 15Java NET: Interaja com a Internet HTTPS §  E o HTTPS? Se utilizarmos, nossa aplicação é segura?!
  • 16.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Entendendo File e Stream Java NET: Interaja com a Internet 16
  • 17.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet API Java Net §  Antes de entrarmos na API Java Net, os seguintes pré-requisitos devem ser abordados: §  Classe File §  Streams §  Assim, esta seção apresenta uma visão geral desses assuntos 17
  • 18.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Classe java.io.File! §  Classe responsável em realizar métodos em arquivos físicos. Para se construir um objeto do tipo File, deve saber o nome completo do arquivo. Caso o arquivo esteja na raiz do workspace pode apenas passar o nome do arquivo §  Caso se passe o nome de um arquivo que não existe, este é criado na primeira necessidade §  Exemplo: §  new File("C:pastameuArquivo.txt")! §  new File("meuArquivoNoWorkspace.txt")! §  new File(”/dev/etc/xpto.txt”)! §  new File(”/bin")! Java NET: Interaja com a Internet 18
  • 19.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Classe java.io.File §  Trabalhando com um arquivo: File fileTexto = new File("arquivoTexto.txt");! !System.out.println("Nome do arquivo: " + fileTexto.getName());! !System.out.println("O arquivo existe? " + fileTexto.exists());! !System.out.println(”Diretório? " + fileTexto.isDirectory());! !if (fileTexto.isFile()) {! ! !System.out.println("É um arquivo do diretório: " ! ! ! !+ fileTexto.getAbsolutePath());! !}! !System.out.println("Posso ler? " + fileTexto.canRead());! ! S y s t e m . o u t . p r i n t l n ( " P o s s o e s c r e v e r ? " + fileTexto.canWrite());! §  Enfim, classe File não manipula arquivos... §  Então, quem manipula?! Streams... ! Java NET: Interaja com a Internet 19
  • 20.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Streams §  Java fornece uma interface consistente ao programador, independente do dispositivo real que é acessado §  Essa abstração é chamada stream e o dispositivo real pode ser: §  arquivo (file) §  impressora §  socket §  Internet §  … §  Em outras palavras, você trabalha com qualquer dispositivo do mesmo modo (com certas limitações) Java NET: Interaja com a Internet 20
  • 21.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Streams §  Basicamente, existem dois principais tipos de streams: §  stream de texto §  Manipula caracteres §  Leitura: Reader! §  Escrita: Writer! §  stream binário §  Manipula bytes §  Leitura: InputStream! §  Escrita: OutputStream Java NET: Interaja com a Internet 21
  • 22.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Streams! Java NET: Interaja com a Internet 22
  • 23.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Streams §  Devido ao foco do curso, não colocarei exemplos de uso §  O conhecimento necessário será absorvido durante as explicações da próxima seção (on-the-fly) Java NET: Interaja com a Internet 23
  • 24.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 API Java Net Java NET: Interaja com a Internet 24
  • 25.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 API Java Net §  API completa desenvolvida pela Oracle / Sun para acessos à Internet §  Com essa API podemos: §  Buscar recursos web (página HTML, por exemplo) §  Submeter formulários §  Nos próximos slides veremos alguns exemplos básicos da utilização dessa API Java NET: Interaja com a Internet 25
  • 26.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 API Java Net §  Acessando um site §  Lendo do InputStream da URLConnection! §  Projeto JavaNet: com.terra.exemplos.RecursoHTML! §  O conteúdo retornado é uma HTML, isto é, texto! §  Logo, qual o papel de um browser? Java NET: Interaja com a Internet 26
  • 27.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 API Java Net §  Só com o que já sabemos, podemos baixar qualquer conteúdo e salvá-lo em disco (espécie de um programa de download) §  Baixando um recurso (imagem ou pdf, por exemplo): §  Lendo do InputStream da URLConnection §  Escrevendo no OutputStream de um arquivo! §  Projeto JavaNet: com.terra.exemplos.SalvarRecurso! Java NET: Interaja com a Internet 27
  • 28.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 API Java Net §  Submetendo um formulário §  Descobrir url do formulário e nome dos seus campos §  Antes da submissão §  Uso de URLEncoder para passagem de parâmetros §  Escrita no OutputStream da URLConnection! §  Depois da submissão §  Lendo do InputStream da URLConnection! §  Projeto JavaNet: com.terra.exemplos.Formulario! Java NET: Interaja com a Internet 28
  • 29.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Ataque por Força Bruta Java NET: Interaja com a Internet 29
  • 30.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Força Bruta §  Tentar todas as possibilidades... 30
  • 31.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Força Bruta §  Exemplo Motivador: SINEF §  Técnicas para evitar §  Limite de Tentativas §  Você utilizou 5 tentativas. Usuário bloqueado. §  Tempo de Ociosidade §  Você utilizou 5 tentativas. Usuário bloqueado por 30 minutos.! §  Imagem 31
  • 32.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Força Bruta §  Como fazer? §  Descobrir o formulário e o nome do seus campos §  Bolar um algoritmo para gerar todas as combinações §  Ir tentando… §  Tome cuidado que é possível descobrí-lo pelo seu IP §  Não use para o mal: §  www.peladeiro.com.br §  qualquer outro... deixo com vocês... Java NET: Interaja com a Internet 32
  • 33.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Desenvolvimento de Aplicações Java NET: Interaja com a Internet 33
  • 34.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Desenvolvimento de Aplicações §  Acho que já foi possível notar que o mais legal da API Java Net não é acessar à Internet, mas sim, as aplicações que pode gerar §  Nesta seção, faremos a criação de dois aplicativos: §  MyDownload §  Programa para fazer download pela Internet §  MyPageChecker §  Programa para verificar se houve alterações em uma determinada página Java NET: Interaja com a Internet 34
  • 35.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Desenvolvimento de Aplicações §  MyDownload §  Programa para fazer download pela Internet §  Algo como: §  Pacotes: §  com.terra.mydownload.{thread,gui,main}! Java NET: Interaja com a Internet 35
  • 36.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Desenvolvimento de Aplicações §  MyPageChecker §  Programa para verificar se houve alterações em uma determinada página §  Algo como: §  Pacotes: §  com.terra.mypagechecker.{thread,gui,main}! Java NET: Interaja com a Internet 36
  • 37.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011 Considerações Finais Java NET: Interaja com a Internet 37
  • 38.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Considerações Finais §  Use para o BEM!!! 38
  • 39.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Dúvidas? ??? 39
  • 40.
    Ricardo Terra (rterrabh[at] gmail.com) Maio, 2011Java NET: Interaja com a Internet Ricardo Terra rterrabh [at] gmail.com Apresentação e projeto Java disponíveis em: www.ricardoterra.com.br/palestras Principais referências bibliográficas: HORSTMANN, C; CORNELL, G. Core Java: Volume 1 – Fundamentos. 8 ed. São Paulo: Pearson, 2010. DEITEL, P; DEITEL, H. Java: Como Programar. 8 ed. São Paulo: Pearson, 2010. Obrigado! 40