Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Login com erro no redirect


bryan

Pergunta

Olá pessoal.. eu raramente faço perguntas em foruns.. sempre resolvo sozinho.. e quando não consigo dou uma pesquisada.. mas dessa vez eu não consigo sair do lugar..

eu to querendo fazer um programa.. (C#) que entra no orkut e verifica se há recados.. se há novos comentarios em fotos.. e tudo mais que der pra fazer nele..

mas eu empaquei logo no login.. o orkut manda um redirect.. e dai o programa pára .. o que eu quaro é saber como se habilita alguma coisa que funcione tipo um autoredirect.. já procurei mas não achei.. não sou tão leigo na linguagem.. mas se puderem não usem termos dificeis.. xD

só em fazer o prog passar dessa parte vai ser um grande avanço.. eu tenho um programa também to orkut que tem mais de 2500 linhas de codigo.. sem contar com as declarações dos componentes que gera automaticamente no visual studio..

me ajudem nessa

ta ae o código pra quem quizer dar uma olhada:

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Text;
using System.Net;
using System.IO;
using System.Xml;
using System.Collections.Generic;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool ResponseComplete = false;

        public Form1()
        {
            InitializeComponent();
        }

        public string SubmitRequest(string url, string data)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                string Response = "";
                if (data.Length > 0)
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(data);


                    req.Method = "POST";
                    req.ContentType = "application/x-www-form-urlencoded";
                    req.ContentLength = buffer.Length;
                    //req.Proxy = new WebProxy(proxy, true); // ignore for local addresses
                    req.CookieContainer = new CookieContainer(); // enable cookies
                    req.AllowAutoRedirect = true;
                    req.Timeout = 10000;
                    req.KeepAlive = true;

                    req.PreAuthenticate = true;

                    Stream reqst = req.GetRequestStream(); // add form data to request stream

                    reqst.Write(buffer, 0, buffer.Length);
                    reqst.Flush();
                    reqst.Close();
                }
                else
                {
                    //req.Method = "POST";
                    //req.ContentType = "application/x-www-form-urlencoded";
                    //req.ContentLength = buffer.Length;
                    //req.Proxy = new WebProxy(proxy, true); // ignore for local addresses
                    req.CookieContainer = new CookieContainer(); // enable cookies
                    req.AllowAutoRedirect = true;
                    req.Timeout = 10000;
                    req.KeepAlive = true;
                    req.PreAuthenticate = true;
                }

                HttpWebResponse res = (HttpWebResponse)req.GetResponse(); // send request,get response
                Stream resst = res.GetResponseStream(); // display HTTP response
                StreamReader sr = new StreamReader(resst);
                Response = sr.ReadToEnd();

                //String[] str = Tratar("\"http://www.orkut.com.br/Main#Profile.aspx?uid=4797764876222875805\"", ".aspx\\?uid=?([^\\D]\\d{16,})*");

                //textBox1.Text = str[0];

                return Response;
            }
            catch
            {
                return "%erro%";
            }
        }

        public string Navigate(string url, string data)
        {
            String ReturnedResponse = SubmitRequest(url, data);
            String Response;
            if (ReturnedResponse != "%erro%")
            {
                Response = ReturnedResponse;
                ResponseComplete = true;
                return Response;
            }
            else
            {
                return "%erro%";
            }

        }

        [b]private void button1_Click(object sender, EventArgs e)
        {[/b]            string Response = Navigate("https://www.google.com/accounts/ServiceLoginAuth?", "Email=[b]EMAILTESTE[/b]&Passwd=[b]SENHATESTE[/b]&skipvpage=true&service=orkut");
            if (Response.Contains("http-equiv=\"refresh\" content=\"0; url='http://www.google.com.br/accounts/"))
            {
                string[] tratar = Tratar(Response, "location\\.replace\\(\"+(http[^\\r\\n]+)\"\\)");
                textBox1.Text = Navigate(tratar[0], "");
            }
        }

        public string[] Tratar(string texto, string RegEx)
        {
            String[] valores = new String[500];

            if ((texto.Length > 0) & (RegEx.Length > 0))
            {
                textBox1.Text = "";
                try
                {
                    string InputText = texto;
                    Regex exp = new Regex(RegEx,
                    RegexOptions.Multiline);

                    MatchCollection MatchList = exp.Matches(InputText);

                    for (int i = 0; i <= MatchList.Count; i++)
                    {
                        try
                        {
                            valores[i] = MatchList[i].Groups[1].Value;
                        }
                        catch { }
                    }
                }
                catch { }
            }

            return valores;
        }

        
    }
}
é isso que o orkut manda:
<html><head><title>Redirecting</title>

<meta http-equiv="refresh" content="0; url='http://www.google.com.br/accounts/SetSID?ssdc=1&amp;sidt=bLWOgB0BAAA%3D.82oA%2BdLRZrjkj4JeykZPsd1Ru10P9q6vLLDxA%2FCJTiyKBzDUG%2FV9APnIE4mWPyQ0hncQdBewMJPec8fCavXE8aeAEh9AjuPAV3ZlhEY8jrPfgxudGzf6kocGH%2Blcie%2FJNhG3DkIG43coAwCJbrIF3G36RbjTk98PaPLBnakdta%2F0UXJfOe7VV5BGYZLqlxuWya19wUCaqhuSV5QwFrMi8e%2BiIl1A0QMSwtYTkjlkKAeHoPMtHAfw2tc02mm%2FyFN66WBG1a0TofVpuE0cBws2%2BckSGmxlNTh1lphtZ8gHSVg%3D.cl32tfGGBTblP8fA6bmxlA%3D%3D&amp;continue=https%3A%2F%2Fwww.google.com%2Faccounts%2FManageAccount'"></head>
<body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#551a8b" alink="#ff0000">&lt;script type="text/javascript" language="javascript">
    location.replace("http://www.google.com.br/accounts/SetSID?ssdc\x3d1\x26sidt\x3dbLWOgB0BAAA%3D.82oA%2BdLRZrjkj4JeykZPsd1Ru10P9q6vLLDxA%2FCJTiyKBzDUG%2FV9APnIE4mWPyQ0hncQdBewMJPec8fCavXE8aeAEh9AjuPAV3ZlhEY8jrPfgxudGzf6kocGH%2Blcie%2FJNhG3DkIG43coAwCJbrIF3G36RbjTk98PaPLBnakdta%2F0UXJfOe7VV5BGYZLqlxuWya19wUCaqhuSV5QwFrMi8e%2BiIl1A0QMSwtYTkjlkKAeHoPMtHAfw2tc02mm%2FyFN66WBG1a0TofVpuE0cBws2%2BckSGmxlNTh1lphtZ8gHSVg%3D.cl32tfGGBTblP8fA6bmxlA%3D%3D\x26continue\x3dhttps%3A%2F%2Fwww.google.com%2Faccounts%2FManageAccount")
  </script></body></html>

ainda to no começo dele..

to precisando dessa..

ps: são 7:14 da manha.. e eu to acordado desde as 11 da manha de ontem(sabado) =/ desculpem os eros de portugues ae

abraços a todos

*EDITEI O CODIGO POIS ESQUICI A MINHA SENHA E MEU LOGIN NELE.. E COMO FORUM É PUBLICO.. PESSOAS DE FORA PODERIAM TER ACESSO A TAIS INFS*

Editado por bryan
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Bryan, beleza? Isso q você quer fazer é em asp ou c#, porque aqui é forum ASP!

Tipo, nem entendi direito com que você quer dizer com autoredirect, todo caso, se não entendi errado você pode fazer com uma meta de refresh, assim, ao acessar determinada página e após determinado tempo essa meta redireciona para outra página que você determina tb!

Mas enfim... não sei se é isso que você precisa...

qualquer coisa posta aí!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Bryan, beleza? Isso q você quer fazer é em asp ou c#, porque aqui é forum ASP!

Tipo, nem entendi direito com que você quer dizer com autoredirect, todo caso, se não entendi errado você pode fazer com uma meta de refresh, assim, ao acessar determinada página e após determinado tempo essa meta redireciona para outra página que você determina tb!

Mas enfim... não sei se é isso que você precisa...

qualquer coisa posta aí!

[]'s Rafael Spilki

Olá rafael td bem sim..

o programa atualmente é em c#.. mas futuramente eu vou usar o codigo no asp.net que é a mesma coisa que o c# com extensoes frontpage sei lá.. algo assim.. sou novo em asp.. que ai vai ser só copiar o codigo do c# e colar no arquivo default.aspx.cs no asp pra rodar em asp (creio que seja assim.. pelo menos os testes que eu fiz funcionaram, ae na pagina tem tipo um cabeçalho que informa qual arquivo ta o codigo da pagina.. e qual a linguagem dela.. (no caso c#))

o que eu quero fazer é entrar no orkut com o meu programa.. mas como o orkut na processo de login manda um redirect (codigo ACIMA) e meu programa não continua apos isso..

sabe como posso fazer isso ?

ps: se estou no forum errado podem me transferir pro forum certo caso necessário.. mas pelo fato de que vou usar esse copido no aspx.cs daqui uns dias acho inviavel a transferencia.. a não ser que lá vou obter respostas mais precisas caso as pessoas lá sejam mais focadas nesse tipo de problema que to enfrentando..

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, você postou no lugar errado...

Acredito que deveria ter postado no fórum .NET (já que o código se trata de asp.net)

Cara, isso ocorre porque o orkut valida o código em uma página e a tela de login é em outra página.Sendo assim, ele redireciona para outra página

Sou novo no ASP.NET e não sei como fazer isso...

Se achar alguma coisa, eu posto aqui !

Link para o comentário
Compartilhar em outros sites

  • 0
Cara, você postou no lugar errado...

Acredito que deveria ter postado no fórum .NET (já que o código se trata de asp.net)

Cara, isso ocorre porque o orkut valida o código em uma página e a tela de login é em outra página.Sendo assim, ele redireciona para outra página

Sou novo no ASP.NET e não sei como fazer isso...

Se achar alguma coisa, eu posto aqui !

po foi mal então.. achei que esse fosse o forum certo..

mas tipo.. se você analizar o meu codigo.. você vai ver que funciona.. ele da o request em qualquer url e pega o response sem nenhum problema.. aconteceq ue não sei como habilitar um autoredirecionamento.. como no caso.. eu mandei um request pro orkut.. então ele mandou um redirect pra pg que ele vai processar os dados.. ai desse ponto o meu programa pára.. quero saber como adiciono uma coisa pra que tipo: se a pagina pedir um redirect.. então pode redirecionar.. mas acredito eu.. que teria que ter um pequeno loop.. pa carregar a pagina uma ou mais vezes com urls diferentes no redirect.. tipo um do while.. mas não sei qual é melhor.. e nem qual funciona hehe

vlw.. se achar ae posta sim..

Link para o comentário
Compartilhar em outros sites

  • 0

É assim ó Bryan... isso que o orkut te retorna, esse trecho específico... é exatamente um "autoredirect":

meta http-equiv="refresh" content="0; url='http://www.google.com.br/accounts/SetSID?ssdc=1&amp;sidt=bLWOgB0BAAA%3D.82oA%2BdLRZrjkj4JeykZPsd1Ru10P9q6vLLDxA%2FCJTiyKBzDUG%2FV9APnIE4mWPyQ0hncQdBewMJPec8fCavXE8aeAEh9AjuPAV3ZlhEY8jrPfgxudGzf6kocGH%2Blcie%2FJNhG3DkIG43coAwCJbrIF3G36RbjTk98PaPLBnakdta%2F0UXJfOe7VV5BGYZLqlxuWya19wUCaqhuSV5QwFrMi8e%2BiIl1A0QMSwtYTkjlkKAeHoPMtHAfw2tc02mm%2FyFN66WBG1a0TofVpuE0cBws2%2BckSGmxlNTh1lphtZ8gHSVg%3D.cl32tfGGBTblP8fA6bmxlA%3D%3D&amp;continue=https%3A%2F%2Fwww.google.com%2Faccounts%2FManageAccount'">

Agora, eu não entendi direito o q você quer fazer... não manjo nada de C#, portanto tres sugestões pra você:

1) Mover para o forum de C# e ver se alguém já passou por algo do tipo, já que sua app é em C#... ou

2) Mover para forum de .NET;

3) Aguardar que mais alguém opine para tentar te ajudar da melhor forma possível aqui no forum asp mesmo..

Deixo a teu critério, porque realmente não entendi muito bem o que você precisa ainda, ok? Isso aí vai depender diretamente da linguagem que você quer usar...

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
É assim ó Bryan... isso que o orkut te retorna, esse trecho específico... é exatamente um "autoredirect":

meta http-equiv="refresh" content="0; url='http://www.google.com.br/accounts/SetSID?ssdc=1&amp;sidt=bLWOgB0BAAA%3D.82oA%2BdLRZrjkj4JeykZPsd1Ru10P9q6vLLDxA%2FCJTiyKBzDUG%2FV9APnIE4mWPyQ0hncQdBewMJPec8fCavXE8aeAEh9AjuPAV3ZlhEY8jrPfgxudGzf6kocGH%2Blcie%2FJNhG3DkIG43coAwCJbrIF3G36RbjTk98PaPLBnakdta%2F0UXJfOe7VV5BGYZLqlxuWya19wUCaqhuSV5QwFrMi8e%2BiIl1A0QMSwtYTkjlkKAeHoPMtHAfw2tc02mm%2FyFN66WBG1a0TofVpuE0cBws2%2BckSGmxlNTh1lphtZ8gHSVg%3D.cl32tfGGBTblP8fA6bmxlA%3D%3D&amp;continue=https%3A%2F%2Fwww.google.com%2Faccounts%2FManageAccount'">

Agora, eu não entendi direito o q você quer fazer... não manjo nada de C#, portanto tres sugestões pra você:

1) Mover para o forum de C# e ver se alguém já passou por algo do tipo, já que sua app é em C#... ou

2) Mover para forum de .NET;

3) Aguardar que mais alguém opine para tentar te ajudar da melhor forma possível aqui no forum asp mesmo..

Deixo a teu critério, porque realmente não entendi muito bem o que você precisa ainda, ok? Isso aí vai depender diretamente da linguagem que você quer usar...

[]'s Rafael Spilki

então rafael, mas esse é exatamente o eu problema.. eu não consigo seguir o redirect que ele manda.. o que eu quero é seguir esse redirect..

agluma ideia de como fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que o tópico deveria ser movido para o fórum .NET

Infelizmente ainda não estou em um nível muito avançado de ASP.NET e não sei como fazer isso...

Acho que você teria que fazer algo como um loop verificando se você recebeu algum dado de volta do Orkut

Se o orkut enviasse alguma coisa de volta pra você, então é porque ele já teria salvo as sessões (ou cookies) e você já estaria logado

Depois disso você conectava à página de recados do orkut (http://www.orkut.com.br/Main#Scrapbook.aspx?rl=ms) e verificava se tem algum recado

Não sei se seria fácil fazer o que falei acima, afinal não tenho muito conhecimento em ASP.NET

Sendo assim, acho que o melhor seria que algum moderador movesse seu tópico para a área .NET

Link para o comentário
Compartilhar em outros sites

  • 0

pois é.. depois que eu logasse ficaria mole... mas agora.. analizando melhor esse redirect... eu botei numa pagina... e pro gerencimento de contas google.. acho que o que tá faltando são as sessoes.. cookies.. alem de eu ter habilitado (eu acho) parece que não grava..

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                    req.Method = "POST";
                    req.ContentType = "application/x-www-form-urlencoded";
                    req.ContentLength = buffer.Length;
                    //req.Proxy = new WebProxy(proxy, true); // ignore for local addresses
                    req.CookieContainer = new CookieContainer(); // enable cookies

ali tem o CookieContainer.. porem em nenhuma outra parte do pograma eu mexo mais em cookie.. eu deveria acrescentar algo pra ele gravar as sessoes?

porque eu já fiz o redirect na mao com a regex como pode ver no codigo.. (if response contains "meta-equiv="redirect"{redireciona para a url = regexresponse})(portugol xD) mas perdia a sessao.. e eu tava achando que era o prob do redirect.. pode crer..

alguém sabe como eu gravo as sessoes (cookies)?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...