您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
socket实现WordPress博客自动发文登录的方法
周谷佟2025-02-10WordPress教程已有人查阅
导读没有时间详细的写文章了,就随便记录并且分享一下。该方法能扩展到秒杀器哦。只是针对不同的网站 需要不同的分析而已。公司需求以后要能从自己的文章资源平台
没有时间详细的写文章了,就随便记录并且分享一下。该方法能扩展到秒杀器哦。只是针对不同的网站 需要不同的分析而已。公司需求以后要能从自己的文章资源平台,选择文章发布到wordpress站群,所以需要一个自动发布文章的小功能。工作之余发布到园子里和大家分享下。
之前尝试用httpwebrequest 对象方式去实现但发现有cookies接收不全的现象,所以改用socket 模拟http post请求去实现,代码写的很乱,只是初步的探索。
非常渴望和大家一起交流!
主要几个方法:
之前尝试用httpwebrequest 对象方式去实现但发现有cookies接收不全的现象,所以改用socket 模拟http post请求去实现,代码写的很乱,只是初步的探索。
非常渴望和大家一起交流!
主要几个方法:
1 /// <summary>
2 /// 带上cookies 获取需要登录验证的页面
3 /// </summary>
4 /// <param name="url">请求的URL</param>
5 /// <param name="cookies">cookies字符串</param>
6 /// <param name="encoding">页面编码</param>
7 /// <returns></returns>
8 public string GetPage(string url, string cookies, string encoding)
9 {
10 Uri URI = new Uri(url);
11 string strHTML = string.Empty;//用来保存获得的HTML代码
12 IPHostEntry gist = Dns.GetHostEntry(URI.Host);//获得当前URL的IP地址
13 IPAddress ip = gist.AddressList[0];//提取IP地址
14 IPEndPoint ipEnd = new IPEndPoint(ip, 80);//封装IP地址和端口
15 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//实例化Stock
16 try
17 {
18 socket.Connect(ipEnd);
19 }//自动循环捕捉连接
20 catch
21 { }
22 string sendString = "GET " + URI.PathAndQuery + " HTTP/1.1\r\n";
23 sendString += "Connection:close\r\n";
24 sendString += "Content-Type: application/x- -form-urlencoded\r\n";
25 sendString += "Host:" + URI.Host + "\r\n";
26 if (!string.IsNullOrEmpty(cookies))
27 sendString += "Cookie:" + cookies + "\r\n\r\n";
28 byte[] ms = UTF8Encoding.GetEncoding(encoding).GetBytes(sendString);//将头部转换成byte形式
29 socket.Send(ms);//发送
30 int recv = -1;//定义接受数据长度
31 byte[] data = new byte[1024];//用来保存接收数据
32 do
33 {
34 recv = socket.Receive(data);
35 strHTML += Encoding.GetEncoding(encoding).GetString(data, 0, recv);
36 } while (recv != 0);
37 return strHTML;
38 }
socket方式post 登录 之前用httpwebrequest方式 但始终登录不了,原因是cookies接受不全,就改用socket方式 自行处理cookies
1 /// <summary>
2 ///
3 /// </summary>
4 /// <param name="postURL">登录地址</param>
5 /// <param name="postString">发送的字符串</param>
6 /// <param name="encoding">网页编码</param>
7 /// <returns></returns>
8 public string PostData(string postURL,string postString, string encoding)
9 {
10 string strHTML = "";//用来保存获得的HTML代码
11 Uri URI = new Uri(postURL);
12 string sendString;
13 sendString = "POST {0} HTTP/1.1\r\n";
14 sendString += "Host: {1}\r\n";
15 sendString += "User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0\r\n";
16 sendString += "Content-Type:application/x- -form-urlencoded\r\n";
17 sendString += "Content-Length:{2}\r\n";
18 sendString += "Connection:close\r\n\r\n";
19 sendString += "{3}\r\n";
20 sendString = string.Format(sendString, URI.PathAndQuery, URI.Host, postString.Length, postString);
21 Byte[] ByteGet = Encoding.GetEncoding(encoding).GetBytes(sendString);
22 IPAddress hostadd = Dns.GetHostEntry(URI.Host).AddressList[0];
23 IPEndPoint EPhost = new IPEndPoint(hostadd, 80);
24 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
25 s.Connect(EPhost);
26 if (!s.Connected)
27 {
28 strHTML = "链接主机失败";
29 }
30 s.Send(ByteGet, ByteGet.Length, SocketFlags.None);
31 strHTML = Recv(s, Encoding.GetEncoding(encoding));
32 return strHTML;
33 }
处理cookies以及重定向问题
/// <summary>
/// 从返回的源代码中提取cookies 以及301或302跳转
/// </summary>
/// <param name="s"></param>
/// <param name="location"></param>
/// <returns></returns>
public string GetCookies(string html, out string location)
{
StringBuilder sbCookies = new StringBuilder();
location = string.Empty;
string[] arr = html.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string str in arr)
{
if (str.StartsWith("Set-Cookie: "))
{
int intStart = str.IndexOf(";");
string strCookie = str.Substring(12, intStart - 11);
sbCookies.Append(strCookie);
}
if (str.StartsWith("Location:"))
{
location = str.Substring(10);
}
}
return sbCookies.ToString();
}
本文标签:
很赞哦! ()
相关教程
- Wordpress博客新闻主题在线商店平台betheme 21.5.6版
- linux搭建WordPress博客的方法
- 使用C#转移Wordpress博客到为知笔记或Evernote的方法
- 本地搭建Wordpress博客网站的方法
- docker搭建wordpress博客的实现方法
- linux系统搭建wordpress博客的方法
- 阿里云搭建WordPress博客的方法
- wordpress博客怎么写robots.txt
- Windows搭建Wordpress博客的步骤方法
- centOS服务器怎么搭建wordpress博客
- WordPress博客Centos7+Apache2.4+php5.6+mysql5.5搭建Lamp环境
- Docker怎么搭建WordPress博客
图文教程
实现WordPress图片防盗链的方法
如果您的博客有很多很多图片,空间又有流量限制,那么防止别人盗取自己的图片链接应该说是势在必行了,因为在国内
WordPress怎么绑定域名,WordPress绑定域名的方法
WordPress怎么绑定域名,头一步:首先将自己的新域名DNS解析到自己的服务器或是空间ip上,ip绑定新域名。
WordPress网站换服务器迁移的步骤方法
要从A空间迁移到B空间。有2种情况,代表你手上拥有的资源:1) A空间+a域名,B空间+b域名2) A空间+a域名,B空间+a域名假设我现在有个A空间存放着网站,同时绑定着顶级域名, 现在要换
wordpress不用插件实现文章阅读数的方法
一开始想到应该有什么插件能实现,搜索了下,排 头一的是文章浏览量计数器(Post Views Counter)。
相关源码
-
WordPress主题模板主题巴巴/博客X主题源码免费下载博客X主题专注于内容创作领域,为博客、资讯类网站提供专业的内容展示解决方案。该模板采用精心设计的布局结构,能够有效提升内容的可读性和用户停留时间。查看源码 -
(自适应)变压器电子元器件电器配件pbootcms网站模板源码为电子元器件企业打造的响应式网站模板,基于PbootCMS内核开发,助力企业快速构建专业级线上展示平台。支持页面独立设置标题、关键词和描述,内置SEO友好结构。PHP程序确保运行安全稳定,有助于提升搜索引擎收录效果。查看源码 -
(自适应响应式)双语LED照明灯饰灯具外贸网站pbootcms源码下载模板采用响应式设计,能自动适应手机、平板和电脑等多种设备屏幕,确保用户在不同设备上都能获得良好的浏览体验。同一后台管理,数据实时同步,操作简便高效。查看源码 -
(自适应)html5宽屏电线电缆材料加工制造类企业网站源码下载本模板基于PbootCMS系统开发,特别适合电线电缆、电缆材料及相关加工制造类企业使用。采用HTML5宽屏设计,能够展示各类电缆产品的技术参数和规格详情,帮助客户全面了解产品特性。查看源码 -
(自适应响应式)装修装潢设计公司网站源码下载本模板为装修设计企业打造,采用PbootCMS内核开发,整体设计突出空间美学与功能性结合。首页采用大图轮播展示工程案例,服务项目模块支持三维效果展示,呈现装修设计企业的专业形象与技术实力。查看源码 -
(自适应)营销型健身器材产品设备类pbootcms模板网站为健身器材企业打造的营销型网站模板,基于PbootCMS开源内核开发。采用HTML5响应式架构,PC与移动端数据实时同步,适配多终端展示场景。查看源码
| 分享笔记 (共有 篇笔记) |

