2012-09-13 11 views
5

Aşağıdaki kod yahoo'ya giriş yapmıyor. Yeniden nasıl yazılmalıdır? www.yahoo.com adresinde otomatik olarak oturum açan bir .NET uygulaması yazmanın doğru yolu nedir?

(tabii ki, "kullanıcı adı" ve "şifre" Benim asıl hesap adıyla & şifre ile değiştirilmesi gerekmektedir.)

static void Main(string[] args) 
    { 
     string input = string.Format("username={0}&passwd={1}", "<username>", "<password>"); 

     WebRequest request = HttpWebRequest.Create("https://login.yahoo.com/config/login"); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

     StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
     writer.Write(input); 
     writer.Close(); 

     StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()); 

     string x = reader.ReadToEnd(); 

     Console.Read(); 
    } 
+0

Kodlamayı denedim. Işe yaramadı. Zaten ANSI olmayan karakterler yok. –

cevap

5

, kullanıcıyı korumak için kullanılan birçok gizli alanlar

image showing the hidden fields of the form

CSRF

karşı örneğin olduğunu fark edeceksiniz

Belki de, isteğinize eklemek için geçerli bir anti CSRF belirteci almak için öncelikle yahoo'ya bir istek göndermeniz gerekir. Ayrıca sitenin kullandığı javascript'e de göz atmanız gerekecek. Belki müşteri sitesinde hesaplanan bir şey var ve daha sonra giriş verileriyle gönderin.

Bu siteler genellikle değiştiğinden ve belki de yarın uygulamanızın işe yaramayacağından emin olun.

1

form üzerinde çok gizli giriş öğesi vardır. Oldukça muhtemel bir olasılık var ki, sunucu tarafında var olmaları, muhtemelen isteğin sayfanın o günlüğünden kaynaklandığını doğrulamak için çerezlerle birlikte. HttpWebRequest üzerinden istekte eklediniz mi? yahoo sayfanın html kaynağına bakmak zorunda yaparken

2

Böyle giriş yapmakta zorlanacaksınız ve bunun gerçekten mümkün olmadığını düşünüyorum. Program aracılığıyla oturum açmanız gerekiyorsa, OpenID veya OAuth'a ihtiyacınız olacaktır.

Devamı yaklaşık

+1

Mümkün değilse, tarayıcılar bunu yapamadı ... –

0

Yahoo authentication here Bi süre önce benzer bir görevi vardı - Ben bir web sitesine giriş yapabilir ve bunun dışında bazı verileri dışarı çekmek zorunda kaldı. Bana yardımcı olacak hiçbir web hizmeti yoktu. VB6 kullanıyordum ve yaptığım şey bir web tarayıcısı nesnesi oluşturmak, web sayfasını yüklemek ve bu şekilde giriş yapmak, sonra ihtiyacım olan verileri ekrana kazıyarak yapmak.

Bu yaklaşım ham ve güvenilmezdir ve giriş prosedürleri captcha korumasını içeriyorsa ancak hızlı ve daha şık ve kalıcı bir yaklaşım bulmaya çalışırken size yardımcı olabilirse işe yaramaz.

0

Giriş sayfasından bazı kodlarla yahoo postasına giriş yapan bir html sayfam var. Bir süredir çalıştığı için, giriş sayfasındaki "[Oturum Aç]" düğmesinin yanındaki html'ye bakmanızı ve http değerlerine hangi değerlerin dahil edilmesi gerektiğini anlamanızı öneririm.

Yahoo postasına giriş için yazdığım html sayfasına baktığınızda, yalnızca doğru HIDDEN değerlerini sunucuya, ayrıca açıkça kullanıcı ve geçiş geçirmeniz gerekir. Bu nedenle, HIDDEN değer etiketlerini html formunda incelemenizi ve hangisinin http web isteği ile gönderilmesi gerektiğini görmek için denemenizi öneririm. Temelde .Net Framework tarzı

kendi giriş sayfası biçimi yaratmaya Bu İşte :)

0

yardımcı akışları ve kod ile OAuth'u açıklayan bir bağlantıdır umuyoruz. Yahoo'nun yanı sıra Twitter, öğrenmek için iyi bir sitedir. Bağlantıdaki kodlardan bazıları Twitter kullanıyor. OAuth 2.0'ın dışarıda olduğunu unutmayın.Kodlamayı denedim.

http://www.codeproject.com/Articles/131978/Demystifying-OAuth