c#推特登录发推评论

第一次写博客


用c#做了一个有关推特的模拟登录,评论等内容。

开始用c#写时,对c#也就是写过学校的数据库实验课设。然后搜到了有人写过关于c#模拟登录twitter的,就去学习了下,用一段时间弄懂用c#去登录的基本思路,然后自己接着才又做了发推,评论,盖楼,改头像,改密码。非常感谢那位 博主 写的模拟登陆的代码给了我学习的地方!

首先推特登录没有验证码,这也是省去很多麻烦,通过抓包尝试看看登录所需信息

URL:https://twiitter.com/sessions


用户名密码我随便填的,除此之外,还有个token,ui_metrics两个数据需要提交的。这些可以用c#做爬虫实时爬下来然后放入登录请求中,思路也不是很难,就当初对C#爬虫这块不太了解,又去学习了一小会,反正它也没验证码,经过测试最后也是可以成功模拟登录成功了。

public CookieContainer GetCookie( string UserAgent,ref string Token)

        {

            HttpWebRequest request = null;

            HttpWebResponse response = null;

            CookieContainer cookie = null;

            try

            {

                cookie = new CookieContainer();

                request = (HttpWebRequest)HttpWebRequest.Create("https://twitter.com/login/")

                request.Timeout = 18000;

                request.Method = "GET";

                request.Host = "twitter.com";

                request.UserAgent = UserAgent;

                request.AddRange(1024);

                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8";

                request.Headers["Accept-Language"] = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3";

                request.CookieContainer = cookie;

                request.KeepAlive = true;

                response = (HttpWebResponse)request.GetResponse();

                StreamReader sr = new StreamReader(response.GetResponseStream());

                string content = sr.ReadToEnd();

                sr.Close();

                response.Close();

                //获取Token字符串

                Token = Regex.Match(content, @"<input type=""hidden"" value=""(\w+)"" name=""authenticity_token""/>").Groups[1].Value;

                return cookie;

            }

            catch (Exception)

            {

                request.Abort();

                return cookie;

            }

        }

下面是模拟登录的函数,在登录前我访问了https://twiitter.com/login  爬取到token,ui_metrics还有cookie。因为有些帐号登录时需要验证邮箱,后来我又加了个自动判断验证邮箱。验证邮箱需要的参数抓包可以知道的,那些参数也用爬虫正则匹配爬下来就好了,chanllengeId ,userid,token这些都是验证邮箱需要的参数。

public CookieContainer Login(string UserName, string PassWord,string Token, CookieContainer cookie, string UserAgent,string ui_metrics,ref string station,ref string chanllengeId,ref string userid)

        {

         String PostStr = "session%5Busername_or_email%5D=" + UserName + "&session%5Bpassword%5D=" + PassWord + "&return_to_ssl=truee&scribe_log=&redirect_after_login=%2F%3Flogged_out%3D1%26lang%3Den&authenticity_token=" + Token + "&ui_metrics=" + ui_metrics ;

            byte[] Data = Encoding.UTF8.GetBytes(PostStr);

            HttpWebRequest request = null;

            HttpWebResponse response = null;

            try

            {

                request = (HttpWebRequest)WebRequest.Create("https://twitter.com/sessions")

                request.Timeout = 18000;

                request.Method = "POST";

                request.Host = "twitter.com";

                request.UserAgent = UserAgent;

                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*;q=0.8";

                request.Headers["Accept-Language"] = "zh-CN,zh;q=0.9";

                request.Referer = "https://twitter.com/?logged_out=1&lang=en";

                request.CookieContainer = cookie;

                request.KeepAlive = true;

                request.ContentType = "application/x-www-form-urlencoded";

                request.ContentLength = Data.Length;

                Stream requestStream = request.GetRequestStream();

                requestStream.Write(Data, 0, Data.Length);

                requestStream.Close();

                response = (HttpWebResponse)request.GetResponse();

                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);

                string content = sr.ReadToEnd();

                sr.Close();

                response.Close();

                if (content.Contains("If you’re not redirected soon"))

                {

                    station = UserName + "登录成功\n";

                }

                else

                {

                    if (content.Contains("1eqd"))

                    {

                        station = "填写邮箱中...\n";

                        chanllengeId = Regex.Match(content, @"challenge_id=(\w+)&").Groups[1].Value;

                        userid = Regex.Match(content, @"user_id=(\w+)&").Groups[1].Value;

                        return null;

                    }

                    station = UserName + "登录失败\n";

                }

                return cookie;

            }

            catch (Exception)

            {

                station = UserName + "访问失败\n";

                request.Abort();

                return cookie;

            }

        }

这里就返回了登录的cookie,然后可以用它发推,评论,改头像,改名字,改密码,这些通过抓包也不是很难,参照上面代码,抓一下包,post内容换一下差不多都可以了。主要点赞遇到了麻烦,没有做出来,等我有空再研究研究点赞什么情况。

过程中遇到的问题:登录评论时证书之类的出错问题,复制出错提示百度一下,解决了;登录,评论有时post请求与之前不一样,需要重新抓包查看修改post请求内容;带图发推,评论,图片上传的问题,自己也是通过抓包分析,构造请求流,也花了3天左右才成功发有图片内容的推文与评论。主要是图片的请求的顺序,请求内容\n\t一个都不能少,这个卡了我好长时间,这些百度也都有先例,参照了其他人

总结:推特没有微博的验证码,这个是比较好的。最后来看代码不是很难,得多抓包多上网查阅相关资料多尝试,C#语言也多了解了一丢丢,语言只是一种工具,最重要的是对爬虫,模拟登录有了一定的思路。

先写到这吧

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容