comment se connecter à cette page web automatiquement
http://www.conquerclub.com/game.php?game=13025037
Veuillez quelqu'un sait-il comment je peux en programmant connectez-vous sur cette adresse et recevoir ensuite tout le html de la page en arrière comme une chaîne de caractères en Utilisant quelque chose comme HttpWebRequest/HttpWebResponse.
nom d'utilisateur - "testuser1"
mot de passe "test"
(J'ai créé un compte sur le site avec ces références, de sorte qu'il sera en fait l'ouverture de session)
Jusqu'à présent, j'ai ce
private void toolStripButton1_Click(object sender, EventArgs e)
{
var request = WebRequest.Create("http://www.conquerclub.com/game.php?game=13025037");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
richTextBox1.Text = reader.ReadToEnd();
}
Automatiquement re-dirige et renvoie le code html de la page de connexion. Comment puis-je passer le nom d'utilisateur et le mot de passe pour vous connecter automatiquement de sorte qu'il récupère la page de jeu à la place?
Je sais qu'il y a assez peu de questions similaires sur ce point et j'ai passé plusieurs heures à essayer des choses différentes, mais ne peut pas trouver quelque chose à travailler.
Edit:-
Regardé dans cette nouvelle et ce site utilise des cookies pour la connexion.
Essayé ce code mais il est encore juste retourner à la page de connexion.
private void toolStripButton1_Click(object sender, EventArgs e)
{
string loginUri = "http://www.conquerclub.com/login.php";
string username = "testuser1";
string password = "testing";
string reqString = "username=" + username + "&password=" + password;
byte[] requestData = Encoding.UTF8.GetBytes(reqString);
CookieContainer cc = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUri);
request.Proxy = null;
request.AllowAutoRedirect = false;
request.CookieContainer = cc;
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestData.Length;
using (Stream s = request.GetRequestStream())
s.Write(requestData, 0, requestData.Length);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.Cookies != null)
{
foreach (Cookie c in response.Cookies)
Console.WriteLine(c.Name + " = " + c.Value);
}
}
string newloginUri = "http://www.conquerclub.com/game.php?game=13025037";
HttpWebRequest newrequest = (HttpWebRequest)WebRequest.Create(newloginUri);
newrequest.Proxy = null;
newrequest.CookieContainer = cc;
using (HttpWebResponse newresponse = (HttpWebResponse)newrequest.GetResponse())
using (Stream resSteam = newresponse.GetResponseStream())
using (StreamReader sr = new StreamReader(resSteam))
richTextBox1.Text = sr.ReadToEnd();
}
Ont constaté que le code en bas pour ouvrir une session dans la page de jeu peut être mis en oeuvre par les premières de vous connecter manuellement en utilisant un violon sur firefox puis copier et coller les biscuits et le codage en dur dans newrequest comme ça.
string newloginUri = "http://www.conquerclub.com/game.php?game=13025037";
HttpWebRequest newrequest = (HttpWebRequest)WebRequest.Create(newloginUri);
newrequest.Proxy = null;
newrequest.CookieContainer = new CookieContainer();
newrequest.CookieContainer.Add(new Uri("http://www.conquerclub.com"), new Cookie("PHPSESSID","86bte1ipainiq760vm2flv4h13"));
newrequest.CookieContainer.Add(new Uri("http://www.conquerclub.com"), new Cookie("phpbb3_jer7c_u", "648113"));
newrequest.CookieContainer.Add(new Uri("http://www.conquerclub.com"), new Cookie("phpbb3_jer7c_k", ""));
newrequest.CookieContainer.Add(new Uri("http://www.conquerclub.com"), new Cookie("phpbb3_jer7c_sid", "3eebb0771a68c4a58581e495c34b2c93"));
using (HttpWebResponse newresponse = (HttpWebResponse)newrequest.GetResponse())
using (Stream resSteam = newresponse.GetResponseStream())
using (StreamReader sr = new StreamReader(resSteam))
richTextBox1.Text = sr.ReadToEnd();
Ceci renvoie à la page de jeu que je le veux, mais ne peut pas comprendre comment obtenir le login de travail de sorte qu'il sera de retour le droit de cookies. Sur le débogage du code de l'cookies qui sont complètement différents de ceux que je vois dans le violoneux, donc on dirait que ça vient pas de la connexion.
- Chose la plus simple à faire serait de se connecter manuellement et à l'aide de Fiddler, regarder la requête qui est envoyée. Vous pouvez ensuite reconstruire cette demande dans votre code. (Note: il n'a pas l'air comme ils le sont à l'aide de SSL de sorte que vous ne devriez pas avoir à activer l'une de l'HTTPS fonctionnalités dans un violon, mais pour la future référence que vous pourriez si vous avez besoin.)
- Ouais fait ça et maintenant je peux l'obtenir pour vous connecter directement sur la page de jeu, mais seulement par le copier-coller les cookies de fiddler et dur de leur codage. Je ne peux pas comprendre comment le faire se connecter automatiquement, et de récupérer les témoins pertinents.
Vous devez vous connecter pour publier un commentaire.
Le code que vous avez écrit est un GET de l'URL donnée; cependant, pour récupérer le contenu de la page quand vous vous connectez, vous avez besoin de prétendre que votre WebRequest est effectivement de remplissage sous la forme, en passant par toutes les variables de formulaire et envoyer une requête POST à la place.
http://msdn.microsoft.com/en-us/library/debx8sh9.aspx donne une bonne procédure pas à pas les étapes dont vous avez besoin. La suivante n'est pas complète à 100%, mais devrait vous donner un pas dans la bonne direction:
Noter que
content
comprend différentes valeurs qui ne sont pas visibles à l'écran; il peut être vu par l'affichage de la forme de la source, ou (plus facile) à l'aide de l'onglet Réseau sur votre navigateur barre d'outils de débogage de choix et de suivi des données envoyées lorsque le formulaire est soumis.Vous avez besoin pour imiter le processus de connexion. Regarde le code HTML de la page de connexion, et de savoir trois choses:
<form>
qui envoie la demande, plus précisément la cible (qui se trouve dans l'attributaction
) de la forme.method
)Avoir ceux que vous pouvez facilement construire une WebRequest qui imite un login.
Remarque, ce que cela suppose d'un simple écran de connexion (sans AJAX, sans CAPTCHAs).