Conheci esses dias um cara que fez o Ichat (www.ichat.cjb.net), programa que entra no chat do terra. Feito em VB, é bem legal.
Mas o que me chamou a atenção foi que o enviador de mensagens sms.
Porra, como ele consegue mandar, pensei?
Ai, perguntei pra ele!
O cara disse que fez um proxy e verificou o que o browser envia e o que recebe qdo preenchemos o form no site da operadora de celular pra enviar um sms.
Ai ele fez uma sub usando Winsock, que envia esses paramentros pro site da operadora, como se fosse o browser!
Essa é a Sub em VB: ----------------------------------------Private Sub wskEnviar_Connect()
wskEnviar.Tag = vbNullString
Dim Post As String, Page As String, Referer As String
Select Case cmbOperadora.ListIndex
Case 1: 'Claro
Post = "pre1=" & Val(cmbDDD.Text) & "&min=" & Val(txtCel.Text) & "&sender=" & CHtml(txtNome.Text) & "&msg=" & CHtml(txtMsg.Text) & "&callback=&totalCounter=" & 150 - Len(txtMsg.Text) + Len(txtNome.Text) & "&janela=Sim"
Page = "/submitsms.asp"
Referer = "http://www.claro.com.br/"
Cookie = vbNullString
Case 2: 'Telefônica
Post = "prefixo=" & Val(cmbDDD.Text) & "&celular=" & Val(txtCel.Text) & "&remetente=" & CHtml(txtNome.Text) & "&contato=&mensagem=" & CHtml(txtMsg.Text) & "&conteudo=" & CHtml(txtNome.Text) & ": " & CHtml(txtMsg.Text) & "&resposta=capa"
Page = "/aviso_mensagem.asp"
Referer = "http://www.telefonicacelular-rs.net.br/"
Cookie = vbNullString
Case 3: 'Tim
Post = "SMS_DDD=" & Val(cmbDDD.Text) & "&SMS_Telefone=" & Val(txtCel.Text) & IIf(Len(txtNome.Text) <> 0, "&incluirRemet=on&SMS_NomeRemet=" & CHtml(txtNome.Text), "") & "&urlfrom=%2Fservicos%2Fpessoais_torpedo_enviar.asp&PreMessage=" & CHtml(txtMsg.Text) & "&charRestantes=" & 156 - Len(txtMsg.Text) + Len(txtNome.Text)
Page = "/servicos/pessoais_torpedo_enviarSMS.asp"
Referer = "http://www.timbrasil.com.br/servicos/pessoais_torpedo_enviar.asp"
End Select
Dim Enviar As String
Enviar = "POST " & Page & " HTTP/1.0" & vbCrLf & _
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/x-shockwave-flash, */*" & vbCrLf & _
"Referer: " & Referer & vbCrLf & _
"Accept-Language: pt-br" & vbCrLf & _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)" & vbCrLf & _
"Host: " & wskEnviar.RemoteHost & vbCrLf & _
"Content-Length: " & Len(Post) & vbCrLf & _
"Pragma: no-cache" & vbCrLf
If Len(Cookie) <> 0 Then Enviar = Enviar & "Cookie: " & Cookie & vbCrLf
Enviar = Enviar & vbCrLf & Post
wskEnviar.SendData Enviar
End Sub
Private Sub wskEnviar_DataArrival(ByVal bytesTotal As Long)
If bytesTotal <> 0 Then
Dim RD As String
wskEnviar.GetData RD
wskEnviar.Tag = wskEnviar.Tag & RD
End If
End Sub
Private Sub wskEnviar_Close()
wskEnviar.Close
Dim Enviada As Boolean
Select Case cmbOperadora.ListIndex
Case 1: Enviada = InStr(wskEnviar.Tag, "Location: janela_nova.asp") <> 0
Case 2: Enviada = InStr(wskEnviar.Tag, "Location: default.asp") <> 0
Case 3: Enviada = InStr(wskEnviar.Tag, "Location: http://www.timbrasil.com.br/servicos/pessoais_Torpedo_statusFinal.asp?status=1") <> 0
End Select
wskEnviar.Tag = vbNullString
If Enviada Then MsgBox "A mensagem foi enviada!", vbInformation Else MsgBox "Erro ao enviar a mensagem.", vbCritical
End Sub
package servlets.smsSender;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.*;
public class smsSender extends HttpServlet{
public void smsSend(){
SendClaro();
}
public void SendClaro(){
try {
// data
String data = URLEncoder.encode("pre1", "UTF-8") + "=" + URLEncoder.encode("51", "UTF-8");
data += "&" + URLEncoder.encode("min", "UTF-8") + "=" + URLEncoder.encode("92173454", "UTF-8");
data += "&" + URLEncoder.encode("sender", "UTF-8") + "=" + URLEncoder.encode("Daniel", "UTF-8");
data += "&" + URLEncoder.encode("msg", "UTF-8") + "=" + URLEncoder.encode("teste", "UTF-8");
data += "&" + URLEncoder.encode("callback", "UTF-8") + "=" + URLEncoder.encode("91452578", "UTF-8");
data += "&" + URLEncoder.encode("totalCounter", "UTF-8") + "=" + URLEncoder.encode("135", "UTF-8");
data += "&" + URLEncoder.encode("janela", "UTF-8") + "=" + URLEncoder.encode("Sim", "UTF-8");
// header
String header = URLEncoder.encode("POST /submitsms.asp HTTP/1.0
", "UTF-8");
header += URLEncoder.encode("Content-Length: "+ data.length()+"
", "UTF-8");
header += URLEncoder.encode("Content-Type: application/x-www-form-urlencoded
");
header += URLEncoder.encode("Referer: http://www.claro.com.br/");
header += URLEncoder.encode("Connection: Keep-Alive");
header += URLEncoder.encode("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)");
header += URLEncoder.encode("Host: www.claro.com.br");
header += URLEncoder.encode("Pragma: no-cache");
header += URLEncoder.encode("
", "UTF-8");
// Create a socket to the host
String hostname = "http://www.claroonline.com.br/";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
Socket socket = new Socket(addr, port);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write(header + data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
// Process line...
System.out.println("Retorno da claro: "+ line);
}
wr.close();
rd.close();
} catch (Exception e) {
System.out.println("Erro, entrou no Catch: "+ e);
}
}
}

