博客转发小工具2

【转】博客转发小工具2

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

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

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

登录博客园的代码

 1         /// <summary>
 2         /// 登录博客园
 3         /// </summary>
 4         /// <param name="username"></param>
 5         /// <param name="password"></param>
 6         /// <returns></returns>
 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<KeyValuePair<String, String>> paramList = new List<KeyValuePair<String, String>>();
23             paramList.Add(new KeyValuePair<string, string>("__EVENTTARGET", ""));
24             paramList.Add(new KeyValuePair<string, string>("__EVENTARGUMENT", ""));
25             paramList.Add(new KeyValuePair<string, string>("__VIEWSTATE", __VIEWSTATE));
26             paramList.Add(new KeyValuePair<string, string>("__VIEWSTATEGENERATOR", "C2EE9ABB"));
27             paramList.Add(new KeyValuePair<string, string>("__EVENTVALIDATION", __EVENTVALIDATION));
28             paramList.Add(new KeyValuePair<string, string>("tbUserName", username));
29             paramList.Add(new KeyValuePair<string, string>("tbPassword", password));
30             paramList.Add(new KeyValuePair<string, string>("LBD_VCID_c_login_logincaptcha", LBD_VCID_c_login_logincaptcha));
31             paramList.Add(new KeyValuePair<string, string>("LBD_BackWorkaround_c_login_logincaptcha", "1"));
32             //paramList.Add(new KeyValuePair<string, string>("CaptchaCodeTextBox", imgCode));
33             paramList.Add(new KeyValuePair<string, string>("btnLogin", "登  录"));
34             paramList.Add(new KeyValuePair<string, string>("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             else
43                 return false;
44         }

然后就是发布的代码

 1         /// <summary>
 2         /// 发布转发文章
 3         /// </summary>
 4         /// <returns></returns>
 5         public bool Release(string title = "", string content = "")
 6         {
 7             List<KeyValuePair<String, String>> paramList = new List<KeyValuePair<String, String>>();
 8             paramList.Add(new KeyValuePair<string, string>("__VIEWSTATE", @""));
 9             paramList.Add(new KeyValuePair<string, string>("__VIEWSTATEGENERATOR", "FE27D343"));
10             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$txbTitle", title));
11             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$EditorBody", content));
12             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$ckbPublished", "on"));
13             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$chkDisplayHomePage", "on"));
14             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$chkComments", "on"));
15             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$chkMainSyndication", "on"));
16             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$txbEntryName", ""));
17             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$txbExcerpt", ""));
18             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$txbTag", ""));
19             paramList.Add(new KeyValuePair<string, string>("Editor$Edit$Advanced$tbEnryPassword", ""));
20             paramList.Add(new KeyValuePair<string, string>("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             else
27                 return false;
28
29         }

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

不说了 上效果图。

转发成功。

说明:

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

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

环境:

vs2013  .net4.5

功能:

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

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

程序下载  源码下载

下一篇:博客小工具3



博客转发小工具2

原文地址:https://www.cnblogs.com/orangehero/p/10354219.html

时间: 2024-10-10 06:19:31

博客转发小工具2的相关文章

博客转发小工具1

[转]博客转发小工具1 有些朋友在转发别人博客的时候会问,博客怎么转发的啊?让我一段一段的复制吗?那图片怎么办?隐藏代码要一个一个的打开了复制? 对,很麻烦.费时费力.有的同学会说收藏不就可以了吗?收藏只是收藏了别人的地址,并没有收藏人家的全部内容.如果人家删除原文章,那就等于白收藏了. 我不知道 博客园有没有一键转发的功能,反正我是没找到的.于是,闲来无事,做了个博客转发小工具. 其实很简单,分三步. 一:取得页面内容 取页面内容需要用到HtmlAgilityPack.dll 详细用法可以百度

【转】博客转发小工具1

[转]博客转发小工具1 有些朋友在转发别人博客的时候会问,博客怎么转发的啊?让我一段一段的复制吗?那图片怎么办?隐藏代码要一个一个的打开了复制? 对,很麻烦.费时费力.有的同学会说收藏不就可以了吗?收藏只是收藏了别人的地址,并没有收藏人家的全部内容.如果人家删除原文章,那就等于白收藏了. 我不知道 博客园有没有一键转发的功能,反正我是没找到的.于是,闲来无事,做了个博客转发小工具. 其实很简单,分三步. 一:取得页面内容 取页面内容需要用到HtmlAgilityPack.dll 详细用法可以百度

博客备份小工具3

[转]博客备份小工具3 接着 博客转发小工具2 ,又弄了一个第三版.主要功能有:博客备份到本地.浏览备份到本地的博客.关键字搜索本地的博客和转发博客可以选择个人分类 填写Tag标签.其实想了想,转发博客干嘛非要在本地客户端转发,直接在博客园的页面用js不就可以达到目的么.想是这么想,还没尝试.等我写完了这个博客就去试试..继续回到这个小工具,说实在的本人做的这个小工具界面丑的那是..反正就是很丑很丑啦.没办法,没有美工的那种艺术细胞.还有就是,整个功能其实真没什么技术含量,还是html的抓取,w

利用MetaWeblog API 自制博客发布小工具

博客园提供了诸多数据接口, 利用这些接口可以很容易的实现博客的发布,修改,删除等 1.需要引用一个DLL:为CookComputing.XmlRpcV2 2.新建一个类,在其中是一些要实现的东西,如: 3.调用这些接口发布一篇简单的博客,其中的URL应该是你的博客设置里的 在下方的账号与密码处填上你的账号与密码 4.查看结果

为知笔记 | [插件]发布笔记到博客,更好的博客离线撰写工具

23 二 1 --> [插件]发布笔记到博客,更好的博客离线撰写工具 2011-02-23 功能特性 为知笔记支持绝大部分的博客离线撰写,可以方便地把笔记直接发布为博客. 使用 打开您已经在Wiz的撰写好的文章,然后点击“分享”按钮-发布到博客,如下图: 选择“发布到博客”,出现如下对话框: API地址:就是博客离线撰写发布的API地址,通常每一个博客的API地址都不相同,您可以从博客的帮助里面获得.下面是常用的一些博客API地址:  常用博客 API地址 新浪博客 http://upload.

博客园小技巧

1.博客园小技巧 2.半成品博客皮肤(不知有没有继续下去的必要)

11个最流行的静态(博客)网站生成工具

11个最流行的静态(博客)网站生成工具 最近特别流行使用静态网站搭建博客,本博客就是host在GitHub Pages的静态网站.静态网站非常适合专注于内容的网站,例如,博客.那你可能会问,为什么不用大名顶顶的wordpress(动态网站)呢. 静态网站和动态网站相比有如下好处: 省钱.静态网站占用的系统资源少.如果挂到github pages上,只要注册一个域名就可以了. 速度快.不经过php解析器,不用数据库,速度自然比动态网站快 安全.由于静态网站的简洁,免疫很多web攻击方式. 服务器端

王大仙的博客园小仓鼠

今天手敲了一套博客园的css样式,网上搜到的小仓鼠挺有意思,自己稍作改装,粘贴上就可以用 附上代码: <style type="text/css"> #shhamster{ background: #a8c1d8;border-radius:10px; } #shhamster:hover{ border-radius: 5px;border: red 1px solid;background: orange; } </style> <div id=&qu

网站开发的福音:流行的静态(博客)网站生成工具

最近特别流行使用静态网站搭建博客,静态网站非常适合专注于内容的网站,例如,博客.那你可能会问,为什么不用大名顶顶的wordpress(动态网站)呢. 静态网站和动态网站相比有如下好处: 省钱.静态网站占用的系统资源少.如果挂到github pages上,只要注册一个域名就可以了. 速度快.不经过php解析器,不用数据库,速度自然比动态网站快 安全.由于静态网站的简洁,免疫很多web***方式. 服务器端配置简单.只需要一个web server(apache.nginx). 非常容易维护. 静态网