博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
博客转发小工具2
阅读量:6271 次
发布时间:2019-06-22

本文共 4586 字,大约阅读时间需要 15 分钟。

下一篇:

昨天发了一个有朋友说“能一键转发到各主流媒体站上就更好了”。一开始我以为会能难,需要登录啊还有cookie的管理啊模拟post请求啊,乱七八糟一大堆。心想算啦,太累人,还不一定搞得定。后来心里总想着有没有什么简单的办法,就在网上查资料。最后皇天不负有心人让我找到了HttpClient。

ok,接着昨天的来。昨天的只能获取别人文章的内容复制到粘贴板。今天让它能一键发布。

首先需要解决的问题就是登录问题,不然可能是不能发布的。

登录博客园的代码

1         ///  2         /// 登录博客园 3         ///  4         ///  5         ///  6         /// 
7 public bool LoginCnblogs(string username = "", string password = "") 8 { 9 httpClient = new HttpClient();10 httpClient.MaxResponseContentBufferSize = 256000;11 httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36");12 String url = "http://passport.cnblogs.com/login.aspx";13 HttpResponseMessage response = httpClient.GetAsync(new Uri(url)).Result;14 String result = response.Content.ReadAsStringAsync().Result;15 16 String __EVENTVALIDATION = new Regex("id=\"__EVENTVALIDATION\" value=\"(.*?)\"").Match(result).Groups[1].Value;17 String __VIEWSTATE = new Regex("id=\"__VIEWSTATE\" value=\"(.*?)\"").Match(result).Groups[1].Value;18 String LBD_VCID_c_login_logincaptcha = new Regex("id=\"LBD_VCID_c_login_logincaptcha\" value=\"(.*?)\"").Match(result).Groups[1].Value;19 20 //开始登录21 url = "http://passport.cnblogs.com/login.aspx";22 List
> paramList = new List
>();23 paramList.Add(new KeyValuePair
("__EVENTTARGET", ""));24 paramList.Add(new KeyValuePair
("__EVENTARGUMENT", ""));25 paramList.Add(new KeyValuePair
("__VIEWSTATE", __VIEWSTATE));26 paramList.Add(new KeyValuePair
("__VIEWSTATEGENERATOR", "C2EE9ABB"));27 paramList.Add(new KeyValuePair
("__EVENTVALIDATION", __EVENTVALIDATION));28 paramList.Add(new KeyValuePair
("tbUserName", username));29 paramList.Add(new KeyValuePair
("tbPassword", password));30 paramList.Add(new KeyValuePair
("LBD_VCID_c_login_logincaptcha", LBD_VCID_c_login_logincaptcha));31 paramList.Add(new KeyValuePair
("LBD_BackWorkaround_c_login_logincaptcha", "1"));32 //paramList.Add(new KeyValuePair
("CaptchaCodeTextBox", imgCode));33 paramList.Add(new KeyValuePair
("btnLogin", "登 录"));34 paramList.Add(new KeyValuePair
("txtReturnUrl", "http://home.cnblogs.com/"));35 response = httpClient.PostAsync(new Uri(url), new FormUrlEncodedContent(paramList)).Result;36 result = response.Content.ReadAsStringAsync().Result;37 38 if (result.Contains("用户登录"))39 return false;40 else if (result.Contains("返回博客园首页"))41 return true;42 else43 return false;44 }

然后就是发布的代码

1         ///  2         /// 发布转发文章 3         ///  4         /// 
5 public bool Release(string title = "", string content = "") 6 { 7 List
> paramList = new List
>(); 8 paramList.Add(new KeyValuePair
("__VIEWSTATE", @"")); 9 paramList.Add(new KeyValuePair
("__VIEWSTATEGENERATOR", "FE27D343"));10 paramList.Add(new KeyValuePair
("Editor$Edit$txbTitle", title));11 paramList.Add(new KeyValuePair
("Editor$Edit$EditorBody", content));12 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$ckbPublished", "on"));13 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$chkDisplayHomePage", "on"));14 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$chkComments", "on"));15 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$chkMainSyndication", "on"));16 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$txbEntryName", ""));17 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$txbExcerpt", ""));18 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$txbTag", ""));19 paramList.Add(new KeyValuePair
("Editor$Edit$Advanced$tbEnryPassword", ""));20 paramList.Add(new KeyValuePair
("Editor$Edit$lkbPost", "发布"));21 22 HttpResponseMessage response = httpClient.PostAsync(new Uri("http://i.cnblogs.com/EditPosts.aspx?opt=1"), new FormUrlEncodedContent(paramList)).Result;23 String result = response.Content.ReadAsStringAsync().Result;24 if (result.Contains("发布成功"))25 return true;26 else27 return false;28 29 }

 关键代码就只有这么几句,没什么好讲的。我也不知其所以然。

不说了 上效果图。

转发成功。

说明:

   因为我登录博客园没有要输入验证码的情况,所以我就没有做验证码的处理了。大家的应该也不用输验证码吧。

还有就是没有做其他主流博客直接的相互转发,只有博客园内的转发。同学们有兴趣可以在次基础上做修改,欢迎改得“面目全非”。

环境:

  vs2013  .net4.5

功能:

  支持博客园一键转发,密码保存。下次就可以不用输入密码了。但是没有做加密措施。同学们可以自己接着折腾。

 

好了~最后发源码了。如果能感兴趣,拿起您的小手点个赞。如果您要反对 求您给你理由。

   

 

下一篇:

 


 

转载地址:http://lilpa.baihongyu.com/

你可能感兴趣的文章
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>