你的位置:首页 > 软件开发 > ASP.net > 【青椒原创】2016C#模拟谷歌Google登陆GmailYoutube小案例

【青椒原创】2016C#模拟谷歌Google登陆GmailYoutube小案例

发布时间:2016-06-14 22:00:08
之所以写这个,是因为本来想写一个Youtube刷评论的工具,把登录做出来了,后面就没继续做下去。涉及到基本的HttpWatch的应用以及Fiddler的应用(Fd主要用来排查问题,通过对比 浏览器和vs代码 找出问题所在!以浏览器为标准)。通过HttpWatch抓包分析,我把登录 ...

之所以写这个,是因为本来想写一个Youtube刷评论的工具,把登录做出来了,后面就没继续做下去。

涉及到基本的HttpWatch的应用以及Fiddler的应用(Fd主要用来排查问题,通过对比 浏览器和vs代码 找出问题所在!以浏览器为标准)。

通过HttpWatch抓包分析,我把登录Youtube一共分为三个阶段:

1. 请求 打开录入邮箱地址 页面

2. 请求 回发本邮箱地址,加载邮箱账号 头像

3. 请求 回发本邮箱地址和密码, 登录Youtube

有很多的Cookie和PostData的话是 服务器不做校验的,也就是说重要的 Cookie和Post/Get数据并不是全部你所看到的,这个你可以后期 模拟登陆成功之后,逐个删掉测试看是否还能登陆成功 来判断 该参数是否必须!

上面的原理其实在做其他 网站的模拟 登录 中也是一样的。

大家直接看代码吧,没啥好讲的也。

 1 private void button1_Click(object sender, EventArgs e) 2     {  3       var cookieJar = new CookieContainer(); 4       CookieAwareWebClient webClient = new CookieAwareWebClient(cookieJar); 5  6       get='_blank'>string GAPS = string.Empty; 7       string GALX = string.Empty; 8       string GoogleAccountsLocale_session = string.Empty; 9 10       string NID = string.Empty;11       string ProfileInformation = string.Empty; 12 13       //1.第一部分init14       string url1 = "https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2F"15       +"www.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26feature%3Dsign_in_button%26next%3D%252Fwatch%253Fv%253DpMUv7qmKQik%26hl%3Dzh-CN&hl=zh-CN&service=youtube";//地址 16 17 18       string srcString1 = webClient.DownloadString(url1);//解码 19 20       //receive cookie 21       GAPS = GetCookie("GAPS", cookieJar);22       GALX = GetCookie("GALX", cookieJar);23       GoogleAccountsLocale_session = GetCookie("GoogleAccountsLocale_session", cookieJar);24       25 26       //2.第二部分input email27       webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可 28       string postString2 = "_utf8=☃" + "&bgresponse="29         + "&checkConnection=youtube:724:0" + "&checkedDomains=youtube" + "&continue=https://www.youtube.com/signin?action_handle_signin=true&app=desktop&feature=sign_in_button&next=%2Fwatch%3Fv%3DpMUv7qmKQik&hl=zh-CN"30         + "&dnConn=" + "&Email=【此处填写自己的Gmail邮箱】" + "&GALX=" + GALX + "&gxf=AFoagUVXYmSP1FoIo4SFJlAauKdrDab_0A:1465396649942"31         + "&hl=zh-CN" + "&Page=PasswordSeparationSignIn" + "&ProfileInformation=" + "&pstMsg=1" + "&sacu=1"32         + "&service=youtube" + "&signIn=下一步";33 34 35       byte[] postData2 = Encoding.UTF8.GetBytes(postString2);//编码,尤其是汉字,事先要看下抓取网页的编码方式 36       string url2 = "https://accounts.google.com/AccountLoginInfo";//地址 37 38       webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可 39       byte[] responseData2 = webClient.UploadData(url2, "POST", postData2);//得到返回字符流 40       string srcString2 = Encoding.UTF8.GetString(responseData2);//解码 41 42       GAPS = GetCookie("GAPS", cookieJar);43 44      //本文地址:http://www.cnblogs.com/x-poior/p/5585506.html 转载请注明,谢谢!45 46       //3.第三部分input pw 47      //  webClient.Headers.Add("Referer", "https://accounts.google.com/AccountLoginInfo");48      //  ProfileInformation = QuMiddle(srcString2, @"name=""ProfileInformation"" type=""hidden"" value=""", @""">"); 后面排除法得出结论,该参数不是必需的,49 50       string postString3 = "_utf8=☃" + "&bgresponse="51         + "&checkConnection=youtube:724:0" + "&checkConnection=youtube:398:0"52         + "&checkedDomains=youtube" + "&checkedDomains=youtube"53         + "&continue=https://www.youtube.com/signin?action_handle_signin=true&app=desktop&feature=sign_in_button&next=%2Fwatch%3Fv%3DpMUv7qmKQik&hl=zh-CN"54         + "&dnConn=" + "&Email=【此处填写自己的Gmail邮箱】" + "&GALX=" + GALX + "&gxf=AFoagUVXYmSP1FoIo4SFJlAauKdrDab_0A:1465396649942"55         + "&hl=zh-CN" + "&Page=PasswordSeparationSignIn" + "&Passwd=【此处填写自己的Gmail密码】"56         + "&PersistentCookie=yes" + "&ProfileInformation=" + "&pstMsg=1" + "&pstMsg=1"57         + "&rmShown=1" + "&sacu=1"58         + "&service=youtube" + "&signIn=登录";59 60       61       byte[] postData3 = Encoding.UTF8.GetBytes(postString3);//编码,尤其是汉字,事先要看下抓取网页的编码方式 62       string url3 = "https://accounts.google.com/ServiceLoginAuth";//地址 63        64       webClient.Method = "POST";65       string srcString3 = webClient.UploadString(url3, postString3);66 67 68       //第四部分,校验Cookie数目判断是否成功!69       var lastCookie = cookieJar;//注意,如果第三部分,返回的Response的Cookie的数量有>20 个的话,说明登陆成功了!Google 返回给你很多凭证,可以登录Google大部分的产品、70       var s2s4 = srcString3;71 72 73       var agereg = webClient.DownloadString("https://www.youtube.com/watch?v=VYwkmp97-B4");//左边是受年龄限制的视频,不登陆验证是没法观看下载的!!返回Html-String里含有“ytplayer.config”说明可以观看下载!74 75       76     }

原标题:【青椒原创】2016C#模拟谷歌Google登陆GmailYoutube小案例

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录