jsign
Setembro 6, 2012, 9:40am
#1
Olá pessoal, bom dia!
Tenho a seguinte tarefa a efetuar, logar em um sistema através da minha aplicação, seria como logar no gmail ou no facebook através da aplicação.
Nota: Não existe um serviço para isso (Rest, WebService, rmi na unha, …, nada ).
A ideia é pegar os “names” dos inputs da página e posta-los sob a action do form qual pertencem através de um executável.
Abaixo uma tentativa de acesso ao GMAIL:
@Test
public void googleGmail(){
try {
String url = "https://accounts.google.com/ServiceLoginAuth";
String query = "continue=https://mail.google.com/mail/";
query += "&service=mail";
query += "<mpl=default";
query += "&rm=false";
query += "&scc=1";
query += "&ss=1";
query += "&GALX=jHfkUv84ynU";
query += "¨&checkConnection=youtube:248:1";
query += "&checkedDomains=youtube";
query += "&timeStmp=1";
query += "&password=????????";
query += "&Email=??????@gmail.com.br";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost( url + "?" + query );
HttpResponse response = httpClient.execute(postRequest);
System.out.println( "StatusCode: " + response.getStatusLine().getStatusCode() );
BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output.replaceAll(" ", "").replaceAll("\r", "").replaceAll("\t", ""));
}
httpClient.getConnectionManager().shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
O Google me devolve a página de login, ou seja, não consegui logar.
Mudei os parâmetros para acessar uma aplicação minha/local e consegui, submeti e acessei como usuário, devolvendo uma página de bem vindos.
Qualquer ideia é bem vinda, abçs.
O google deve bloquear isso justamente para evitar que sistemas possam se logar em conta de usuário e não você clicando lá.
jsign
Setembro 6, 2012, 12:17pm
#3
Deve ser isso mesmo, rodei o código em três outros sistemas online e funcionou, por exemplo, aqui mesmo no GUJ, ashuashuas dá hora.
Não sei se é uma brexa de segurança do GUJ mas é possível logar e listar as notícias do GUJ, sem rmi, rest ou webservice:
@Test
public void guj(){
try {
// ATENTE A 'SEUNICKNAME' E 'SUASENHA' NA STRING DE CONEXAO (URL)
String url = "http://www.guj.com.br/jforum.java?module=user&action=validateLogin&username=SEUNICK&password=SUASENHA&returnPath=http://www.guj.com.br/forums/list.java";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost( url );
HttpResponse response = httpClient.execute(postRequest);
System.out.println( "StatusCode: " + response.getStatusLine().getStatusCode() ); // StatusCode: 302 REDIRECIONAMENTO
BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent() ) ) );
String output;
while ((output = br.readLine()) != null) {
System.out.println(output.replaceAll(" ", "").replaceAll("\r", "").replaceAll("\t", ""));
}
HttpGet getRequest = new HttpGet( "http://www.guj.com.br/forums/list.java" ); // QUERO VER A LISTA EM MINHA HOME
response = httpClient.execute( getRequest );
br = new BufferedReader( new InputStreamReader((response.getEntity().getContent() ) ) );
while ((output = br.readLine()) != null) {
System.out.println(output.replaceAll(" ", "").replaceAll("\r", "").replaceAll("\t", ""));
}
httpClient.getConnectionManager().shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
Parte do resultado impresso:
....
<a id="myprofile" class="mainmenu" href="/user/edit/115579.java"><img src="/templates/default/images/icon_mini_profile.gif" border="0" alt="[Profile]" /> MEUS DADOS</a>
<a id="privatemessages" class="mainmenu" href="/pm/inbox.java"><img src="/templates/default/images/icon_mini_message.gif" border="0" alt="[Message]" />
MENSAGENS PRIVADAS (0)
</a>
<a id="mymessages" class="mainmenu" href="/posts/listByUser/115579.java"><img src="/templates/default/images/icon_mini_message.gif" border="0" alt="Minhas Mensagens" />
MINHAS MENSAGENS
</a>
<a id="favorites" class="mainmenu" href="/bookmarks/list/115579.java"><img src="/templates/default/images/icon_mini_message.gif" border="0" alt="Favoritos" />
FAVORITOS
</a>
</span>
<a id="logout" class="mainmenu" href="/user/logout.java"><img src="/templates/default/images/icon_mini_login.gif" border="0" alt="[Login]" /> LOGOUT [jsign]</a></span>
....