美文网首页
c#推特登录发推评论

c#推特登录发推评论

作者: 努曼曼 | 来源:发表于2018-09-24 20:52 被阅读0次

第一次写博客


用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#语言也多了解了一丢丢,语言只是一种工具,最重要的是对爬虫,模拟登录有了一定的思路。

先写到这吧

相关文章

  • c#推特登录发推评论

    第一次写博客 用c#做了一个有关推特的模拟登录,评论等内容。 开始用c#写时,对c#也就是写过学校的数据库实验课设...

  • 这部川普实名抵制的电影,看着真爽!

    要说推特上最活跃的知名人物是谁? 我觉得非特朗普总统莫属, 他可能是世界上最爱发推特的总统了!! 他在推特上,怼过...

  • 印度人接管硅谷,“打败不了就加入”?

    11月29日。 推特联合创始人杰克·多尔西发推,辞去CEO一职。 ① 离经叛道的杰克多西和Twitter? ▽ 推...

  • 特推

    限时活动-44一套包邮 1 独角兽唇釉套盒+樱花十色眼影盘 2 爱丽小屋冰欺凌唇釉4支 3 兰蔻摇摇乐+3ce春...

  • 推特

    “当抢劫开始,枪击也是开始。”可是你们知道吗?如果不是没给黑人男子一个平等的判决,这场抢劫也许就不会开始了,你们也...

  • 美国移民暂停,香港身份如何快速办理?

    昨晚,特朗普发的一条推特炸了!引起全球关注。 特朗普宣称要“叫停所有人移民美国”? 推特原文是这样的:“鉴于无形的...

  • 马斯克卖出了5,044,000股特斯拉股票

    近年来,马斯克一直是科技圈的顶流。他本人一直活跃在推特上,在推特上的粉丝有7400多万。他发一条推文,就能影响特斯...

  • 也说特朗普发推特

    全世界人都知道特朗普的疯狂和潇洒,不按套路出牌,专治各种吹牛逼,但绝大多数中国人,起码有12亿中国人,却不知...

  • 特朗普发推称帮中兴恢复业务;三大外卖平台公示数千家违规店铺;

    1、特朗普发推称帮中兴恢复业务 美国当地时间13日,特朗普发推称将帮助中兴恢复业务,美国商务部已经被指示去完成这件...

  • 我为正义带盐

    万人瞩目,川剧爱好者,b站大明星 川普小特特,一有事就发几条推特。 历史上第一个,推特办公的大总统。 平民挣扎...

网友评论

      本文标题:c#推特登录发推评论

      本文链接:https://www.haomeiwen.com/subject/osshoftx.html