首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于HTTP协议

关于HTTP协议
EN

Stack Overflow用户
提问于 2014-07-22 09:39:21
回答 1查看 107关注 0票数 0

我对HTTP非常陌生,但为了能够自动认为C#控制台应用程序在Twitter上创建了一个新帐户,我正在研究它。我要做的是,首先执行一个GET请求,以便在页面上收集一些数据(例如,真实性令牌),然后我将我的数据发布到一个特定的URL中。我用于GET操作的URL是"https://www.twitter.com/signup/

然后我进行POST操作,给出所有必需的头( cookie除外,我不知道cookie对进程是否重要)和我想要创建的帐户的格式化数据。

问题是:当我启动我的程序时,首先它不创建任何帐户,然后服务器回答我将我重定向回www.twitter.com/ account /new,感觉好像我没有填充正确的字段,但我不知道实际发生了什么。

这是我的主要代码:

代码语言:javascript
复制
static void Main(string[] args)
        {
            // Set up data info
            string[] infos = SetUpAccountInfo();
            string parsedData= FormDataParsing(infos);

            StreamWriter myWriter = null;
            StreamReader myReader = null;
            CookieContainer cookies = new CookieContainer();

            HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(POSTSignUpURL);
            objRequest.Method = "POST";
            objRequest.Host = "twitter.com";
            objRequest.ProtocolVersion = HttpVersion.Version11;
            objRequest.ContentLength = machin.Length;
            objRequest.ContentType = "application/x-www-form-urlencoded";
            objRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            objRequest.Headers.Add("accept-encoding", "gzip,deflate,sdch");
            objRequest.Headers.Add("accept-language", "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4");
            objRequest.Headers.Add("cache-control", "max-age=0");
            objRequest.Headers.Add("origin", "https://twitter.com");
            objRequest.Referer = "https://twitter.com/signup";
            objRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";
            System.Net.ServicePointManager.Expect100Continue = false;
            objRequest.CookieContainer = cookies;

            try
            {
                myWriter = new StreamWriter(objRequest.GetRequestStream());
                myWriter.Write(parsedData);


            }
            catch (Exception e)
            {
                // return e.Message;
            }
            finally
            {
                myWriter.Close();

            }

            HttpWebResponse response = objRequest.GetResponse() as HttpWebResponse;
            using (StreamReader sr =
                 new StreamReader(response.GetResponseStream()))
            {
                string result = sr.ReadToEnd();
                HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
                document.LoadHtml(result);

                // Close and clean up the StreamReader
                sr.Close();
            }



        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-22 09:44:13

Use Fiddler to observe what you are sending and what comes back.将其与使用web浏览器成功注册时所发生的情况进行比较。

你会发现不同的。Twitter无法告诉您使用的是什么客户端程序。这个问题只能由你寄出的东西引起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24883870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档