当前位置: 首页 > news >正文

如何对网站做进一步优化wordpress评论主题

如何对网站做进一步优化,wordpress评论主题,甘肃省建设厅查询网站,重庆网站制作公司初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github#xff1a;codetoys#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的#xff0c;可以在任何平台上使用。 早期上网经常需要使用代理服务…初级代码游戏的专栏介绍与文章目录-CSDN博客 我的githubcodetoys所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的可以在任何平台上使用。 早期上网经常需要使用代理服务器现在用的比较少了大家更耳熟能详的反而是“反向代理”如Nginx。 代理服务器一般用作局域网上网而反向代理则是把来自互联网的连接转发到局域网上作用刚好相反。 HTTP协议自身就带有对代理服务器的支持。HTTP协议目前主要有多个版本0.9太简单基本不见了1.0只支持一个连接一个请求1.1则支持长连接2.0极大复杂化了传输过程支持多路复用。协议版本这么多但是代理服务器作为中间商可以选择一个较低的版本用户的客户端和服务器一般都有能力适应多个版本。 代理服务器可以选择比较简单的HTTP1.0版本一个连接就是一个请求只需要在连接建立之后做处理处理完请求就是简单的数据转发了。 目录 HTTP1.0协议对代理服务器的支持基本就是两点 代理服务器要做的事情是 代理服务器认证 隧道请求CONNECT 代码示例 HTTP1.0协议对代理服务器的支持基本就是两点 请求行对使用绝对URL专用于代理服务器的Proxy-XXXX头标 代理服务器要做的事情是 取出请求行的服务器域名和端口并擦除擦除后与直接请求的请求行相同将协议版本降低为自己支持的版本根据proxy-XXXX头标处理并擦除像直接请求一样访问服务器转发数据给用户 前面说的“擦除”是把后面的数据前移而不是设置为空格设置为空格并不符合HTTP协议服务器一般不能理解。 原则上代理服务器可以支持客户端和服务器是不同的协议版本比如客户端是1.0而服务器是1.1这将极大地影响程序复杂度。 虽然HTTP的BODY与代理服务器处理无关只需要接受完头部就可以处理但是最好整个请求完整发送因为有些服务器不能处理请求头和BODY分开的情形。 代理服务器认证 代理服务器通过Proxy-XXXX头标进行认证这个认证是代理服务器的认证而不是用户要访问的服务器的认证。代理服务器认证完后就应该删除这些头标因为这些头标对目标服务器毫无意义。 隧道请求CONNECT CONNECT是个不常用的头标专门用于代理。代理服务器取得目标服务器后直接连上去就可以了然后就是双向转发数据。 代码示例 下面的代码就是一个HTTP1.0代理的协议处理部分的代码没有认证因为用的是IP地址认证在进入这个代码之前就已经处理过了 //servicethreadhttp.cpp#include stdafx.h #include mystd.h #include Proxy.h #include httpresp.hextern CProxyApp theApp;//HTTP协议处理线程 DWORD ServiceThreadHttp(LPDWORD lpdwParam) { //--线程参数处理------------------------int cdindex;//连接数据索引struct ServiceData * servicedata;cdindex((struct ThreadUserData *)lpdwParam)-index;servicedata((struct ThreadUserData *)lpdwParam)-servicedata; //--------------------------------------struct ConnectionData * cd;struct LogStruct * logs;cdservicedata-connectiondataarray.pconnectiondata[cdindex];if(-1!cd-log){logsservicedata-memlogfile.logstructcd-log;}else{logsNULL;} //----------------------------------------struct ConfigInfo * pci;pciservicedata-serviceconfigfiledata.configarray[cd-serviceindex];int headlen;int port;char host[256];char uri[256];unsigned long addr;SOCKADDR_IN sa;BOOL isTunnelFALSE;//是否是隧道请求char tunnelresponse[]HTTP/1.0 200 Connection established\x0d\x0aProxy-agent: FreeProxy 1.0\x0d\x0a\x0d\x0a;//退出if(CONNECTIONDATA_CMD_QUITcd-cmd){closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//接收请求cd-sdc.bufcountRecvHttpRequest(cd-sdc.s,cd-sdc.buf,BUFFERSIZE,cd-cmd,headlen,pci-islimitpost,1000*pci-maxpost);if(0cd-sdc.bufcount){//DebugMessage(RecvHttpRequest失败);closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//分析请求 /* char tracertfile[256];if(-1!mymemindex(cd-sdc.buf,cd-sdc.bufcount,says%2Fnick,strlen(says%2Fnick))){strcpy(tracertfile,tracert_);itoa(cdindex,tracertfilestrlen(tracertfile),10);if(-1!cd-log)WriteTracertFile(tracertfile,logs-username,strlen(logs-username));WriteTracertFile(tracertfile,cd-sdc.buf,cd-sdc.bufcount);}*/if(0GetHttpURL(cd-sdc.buf,cd-sdc.bufcount,headlen4,host,256,port,uri,256)){if(pci-isenableconnect 0GetTunnelURL(cd-sdc.buf,cd-sdc.bufcount,headlen4,host,256,port,uri,256)){//是隧道请求isTunnelTRUE;if(-1!cd-log){strcpy(logs-domainname,host);}}else{send(cd-sdc.s,httpresp400,strlen(httpresp400),0);closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-2;}}else{if(-1!cd-log){strcpy(logs-domainname,host);}}ClearProxyInfo(cd-sdc.buf,cd-sdc.bufcount);//检查目标许可if(IsForbidden(theApp.bandata,host,uri)){send(cd-sdc.s,httpresp403,strlen(httpresp403),0);closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//退出if(CONNECTIONDATA_CMD_QUITcd-cmd){closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//记录日志计时开始if(-1!cd-log){time(logs-timestart);}//域名解析if(1!GetAddrByHost(addr,host)){send(cd-sdc.s,httpresp600,strlen(httpresp600),0);closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-3;}memcpy((sa.sin_addr.S_un.S_addr),addr,4);sa.sin_familyAF_INET;sa.sin_porthtons((unsigned short)port);//建立SOCKETif(INVALID_SOCKET(cd-sdr.ssocket(AF_INET,SOCK_STREAM,0))){send(cd-sdc.s,httpresp601,strlen(httpresp601),0);closesocket(cd-sdc.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-4;}//退出if(CONNECTIONDATA_CMD_QUITcd-cmd){closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//连接if(SOCKET_ERRORconnect(cd-sdr.s,(struct sockaddr *)sa,sizeof(sa))){send(cd-sdc.s,httpresp602,strlen(httpresp602),0);closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-5;}else{if(-1!cd-log){strcpy(logs-domainname,uri);}}//退出if(CONNECTIONDATA_CMD_QUITcd-cmd){closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//发送请求if(isTunnel){if(SOCKET_ERRORsend(cd-sdc.s,tunnelresponse,strlen(tunnelresponse),0)){send(cd-sdc.s,httpresp603,strlen(httpresp603),0);closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-6;}}if(SOCKET_ERRORsend(cd-sdr.s,cd-sdc.buf,cd-sdc.bufcount,0)){send(cd-sdc.s,httpresp603,strlen(httpresp603),0);closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-6;}//记录字节数if(-1!cd-log){logs-bytecountcd-sdc.bufcount;}///TraceData(servicedata-isDataTrace,servicedata-memlogfile.logdatatrace[cd-log].dc,cd-sdc.buf,cd-sdc.bufcount);//退出if(CONNECTIONDATA_CMD_QUITcd-cmd){closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){logs-stateLOGSTRUCT_STATE_NOUSE;}cd-stateCONNECTION_NOUSE;return (DWORD)-1;}//接收数据并发给客户TransData(cd-sdr.s,cd-sdc.s,cd-sdr.buf,BUFFERSIZE,cd-cmd,cd-sdr.bufcount,servicedata,cd);//记录字节数if(-1!cd-log){logs-bytecountcd-sdr.bufcount;}closesocket(cd-sdc.s);closesocket(cd-sdr.s);if(-1!cd-log){time(logs-timeend);logs-stateLOGSTRUCT_STATE_USED;}cd-stateCONNECTION_NOUSE;return 1; }//接收HTTP请求如果出错不执行closesocket() int RecvHttpRequest(SOCKET s,char * buf,int buflen,int * cmd,int* headlen,BOOL islimitpost,int maxpost) {maxpost1;const char CRLF[]\x0d\x0a;const char CRLFCRLF[]\x0d\x0a\x0d\x0a;const char CONTENTLENGTH[]Content-Length:;int recvcount0;int temp;int recvall0;BOOL tempbool;struct timeval timeout;timeout.tv_sec0;timeout.tv_usec100000;for(;1;){//退出if(CONNECTIONDATA_CMD_QUIT*cmd){return -1;}if(1!IsSocketReadReady(s,timeout,tempbool)){return -2;}if(tempbool){recvcountrecv(s,bufrecvall,buflen-recvall,0);}else{continue;}if(SOCKET_ERRORrecvcount){return -3;}else if(0recvcount){return -4;}recvallrecvcount;//在使用后面代码段时使用CRLFCRLF,4否则使用CRLF,2tempmymemindex(buf,recvall,(char*)CRLFCRLF,4);if(-1!temp){*headlentemp;break;}}if(islimitpost -1!(tempmymemindex(buf,*headlen,(char*)CONTENTLENGTH,15))){long i;char len[10];if(-1(imymemindex(buftemp,buflen-temp,(char*)CRLF,2))){return -5;}i-strlen(CONTENTLENGTH);if(i9){return -6;}memcpy(len,buftempstrlen(CONTENTLENGTH),i);len[i]\0;iatoi(len);if(imaxpost){return -7;}}return recvall; }//取得URL int GetHttpURL(char* buf,int * buflenall,int buflen,char * host,int hostbuflen,int * port,char * uri,int uribuflen) {const char CRLF[]\x0d\x0a;int urlstart,urlend;int hoststart,hostend,hostlen;int portstart,portend,portlen;int pos;char str[10];urlendmymemindex(buf,buflen,(char*)CRLF,2);if(-1(urlstartmymemindex(buf,urlend,http://,7))){return -2; }if(urlend-urlstarturibuflen){memcpy(uri,bufurlstart,uribuflen-1);uri[uribuflen-1]\0;}else{memcpy(uri,bufurlstart,urlend-urlstart);uri[urlend-urlstart]\0;}//得到主机名起始位置hoststarturlstart7;if(-1(posmymemindex(bufhoststart,urlend-hoststart,/,1))){return -3;}portendposhoststart;posmymemindex(bufhoststart,portend-hoststart,:,1);if(-1!pos)//有端口{portstartposhoststart1;//得到端口起始位置hostendposhoststart;portlenportend-portstart;memcpy(str,bufportstart,portlen);str[portlen]\0;if(0portlen) *port80;//若端口长度为零实际上无端口{if(0(*portatoi(str)))return -4;}}else//无端口{*port80;hostendportend;}hostlenhostend-hoststart;if(hostlenhostbuflen)return -5;memcpy(host,bufhoststart,hostlen);host[hostlen]\0;//HTTP请求处理long i;//降版本1.1为1.0if(1buf[urlend-1]){buf[urlend-1]0;}//擦去URLiportend-urlstart;memmove(bufurlstart,bufportend,*buflenall-portend);*buflenall-i;return hostlen; }//取得隧道请求 int GetTunnelURL(char* buf,int * buflenall,int buflen,char * host,int hostbuflen,int * port,char * uri,int uribuflen) {const char CRLF[]\x0d\x0a;int urlstart,urlend;int hoststart,hostend,hostlen;int portstart,portend,portlen;int pos;char str[10];urlendmymemindex(buf,buflen,(char*)CRLF,2);if(buflen8 || 0!memcmp(buf,CONNECT,7))return -2;if( !buf[7])return -2;for(urlstart8;urlstartbuflen;urlstart){if( !buf[urlstart])break;}if(urlenduribuflen){memcpy(uri,buf,uribuflen-1);uri[uribuflen-1]\0;}else{memcpy(uri,buf,urlend);uri[urlend]\0;}//得到主机名起始位置hoststarturlstart;if(-1(posmymemindex(bufhoststart,urlend-hoststart,/,1))){return -3;}portendposhoststart;posmymemindex(bufhoststart,portend-hoststart,:,1);if(-1!pos)//有端口{portstartposhoststart1;//得到端口起始位置hostendposhoststart;portlenportend-portstart;memcpy(str,bufportstart,portlen);str[portlen]\0;if(0portlen) *port80;//若端口长度为零实际上无端口{if(0(*portatoi(str)))return -4;}}else//无端口{*port80;hostendportend;}hostlenhostend-hoststart;if(hostlenhostbuflen)return -5;memcpy(host,bufhoststart,hostlen);host[hostlen]\0;//HTTP请求处理*buflenall0;return hostlen; }//清除代理信息 int ClearProxyInfo(char * buf,int * buflenall) {const char PROXYCONNECTION[]Proxy-Connection;const char CRLF[]\x0d\x0a;int i,j;if(2(imymemindex(buf,*buflenall,PROXYCONNECTION,strlen(PROXYCONNECTION))))return 1;//前面至少应有一个CRLFif(0!memcmp(bufi-2,CRLF,2))return 1;if(-1(jmymemindex(bufistrlen(PROXYCONNECTION),(*buflenall)-i-strlen(PROXYCONNECTION),CRLF,2))){j(*buflenall)-i-strlen(PROXYCONNECTION);}//擦去代理信息memmove(bufi-2,bufistrlen(PROXYCONNECTION)j,(*buflenall)-(istrlen(PROXYCONNECTION)j));*buflenall-2strlen(PROXYCONNECTION)j;return 1; } 主要就是这么几件事取出目标地址和端口擦除目标信息降低版本为1.0擦除Proxy-XXXX头标连接目标双向转发数据。 这个代码是从实际项目中截取出来的。 这里是结束
文章转载自:
http://www.morning.qlck.cn.gov.cn.qlck.cn
http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn
http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn
http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn
http://www.morning.grbgn.cn.gov.cn.grbgn.cn
http://www.morning.hmhdn.cn.gov.cn.hmhdn.cn
http://www.morning.kqxwm.cn.gov.cn.kqxwm.cn
http://www.morning.xcdph.cn.gov.cn.xcdph.cn
http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn
http://www.morning.bntfy.cn.gov.cn.bntfy.cn
http://www.morning.kxrld.cn.gov.cn.kxrld.cn
http://www.morning.mmosan.com.gov.cn.mmosan.com
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.kngqd.cn.gov.cn.kngqd.cn
http://www.morning.wjdgx.cn.gov.cn.wjdgx.cn
http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn
http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn
http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn
http://www.morning.jhswp.cn.gov.cn.jhswp.cn
http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn
http://www.morning.hjwzpt.com.gov.cn.hjwzpt.com
http://www.morning.rfhm.cn.gov.cn.rfhm.cn
http://www.morning.kpbgp.cn.gov.cn.kpbgp.cn
http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn
http://www.morning.bsghk.cn.gov.cn.bsghk.cn
http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn
http://www.morning.yppln.cn.gov.cn.yppln.cn
http://www.morning.zsrjn.cn.gov.cn.zsrjn.cn
http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn
http://www.morning.lfttb.cn.gov.cn.lfttb.cn
http://www.morning.tpnch.cn.gov.cn.tpnch.cn
http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn
http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn
http://www.morning.qjghx.cn.gov.cn.qjghx.cn
http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn
http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn
http://www.morning.qnypp.cn.gov.cn.qnypp.cn
http://www.morning.pngdc.cn.gov.cn.pngdc.cn
http://www.morning.qdsmile.cn.gov.cn.qdsmile.cn
http://www.morning.080203.cn.gov.cn.080203.cn
http://www.morning.wfkbk.cn.gov.cn.wfkbk.cn
http://www.morning.juju8.cn.gov.cn.juju8.cn
http://www.morning.snyqb.cn.gov.cn.snyqb.cn
http://www.morning.fglth.cn.gov.cn.fglth.cn
http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn
http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn
http://www.morning.khdw.cn.gov.cn.khdw.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.knwry.cn.gov.cn.knwry.cn
http://www.morning.c7627.cn.gov.cn.c7627.cn
http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn
http://www.morning.zcckq.cn.gov.cn.zcckq.cn
http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn
http://www.morning.glxmf.cn.gov.cn.glxmf.cn
http://www.morning.msfqt.cn.gov.cn.msfqt.cn
http://www.morning.nxfuke.com.gov.cn.nxfuke.com
http://www.morning.rtjhw.cn.gov.cn.rtjhw.cn
http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn
http://www.morning.txkrc.cn.gov.cn.txkrc.cn
http://www.morning.pmnn.cn.gov.cn.pmnn.cn
http://www.morning.qsszq.cn.gov.cn.qsszq.cn
http://www.morning.xbtlt.cn.gov.cn.xbtlt.cn
http://www.morning.rnwmp.cn.gov.cn.rnwmp.cn
http://www.morning.mzgq.cn.gov.cn.mzgq.cn
http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn
http://www.morning.yccnj.cn.gov.cn.yccnj.cn
http://www.morning.tldhq.cn.gov.cn.tldhq.cn
http://www.morning.flfdm.cn.gov.cn.flfdm.cn
http://www.morning.wjyyg.cn.gov.cn.wjyyg.cn
http://www.morning.ltqzq.cn.gov.cn.ltqzq.cn
http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn
http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn
http://www.morning.rzczl.cn.gov.cn.rzczl.cn
http://www.morning.hylbz.cn.gov.cn.hylbz.cn
http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.ztrht.cn.gov.cn.ztrht.cn
http://www.morning.jycr.cn.gov.cn.jycr.cn
http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn
http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn
http://www.tj-hxxt.cn/news/243272.html

相关文章:

  • 黄石网站建设多少钱360建筑网招聘电话
  • 网络营销的方式和方法谷歌seo建站
  • 专做衬衣的网站云指建站平台
  • 个人教程网站有哪些网站做的比较好看的图片
  • 长沙高升小区做汽车行业网站的网络公司论天心区网页设计如何添加网站logo
  • 贵州城乡住房建设厅网站棋牌游戏软件开发公司
  • 网站备案最快几天做外贸网站哪家好
  • 营口网站建设价格虚拟商城wordpress
  • 网站导航营销的优势扬州工程招标网
  • 创建网站目录权限wordpress会员无法注册
  • 网站如何做竞价广州网站建设正
  • 忻州市中小企业局网站手机网站建设公司推荐
  • 网站建设模板价格中山市区做网站公司
  • 别人帮我做的网站没用要交费用吗做网站软件有哪些
  • wordpress主题购买网站电子商务实网站的建设课件
  • 功能网站建设多少钱培训学做网站要多久
  • 如何提高网站用户体验旅游网站专业化建设的要点
  • 云南省玉溪市建设局官方网站网站开发维护合同范本
  • 企业网站脚本语言国内h5网站欣赏
  • 安徽合肥建设局网站建设集团工程有限公司
  • 百度h5可以做网站吗wordpress导航主题模板
  • 聊城做网站多少钱长沙有哪些app开发公司
  • 南京秦淮区建设局网站网站 导航条
  • 做电商要不要公司网站制作网站付费软件
  • 21天网站建设实录怎么制作动态的网站
  • 在哪个网站找装修公司高端网站建设郑州
  • 如何用ps做网站导航条图书馆网站建设方案
  • 用flash做网站超链接北京服饰电商网站建设
  • 注册公司网站开发建设营业项目wordpress图片二级域名
  • 行业资讯平台网站建设中国电商网站排行榜