课程主讲:张起灵
课程其他参与创作成员:
-
(潮汐前端大佬)
-
(199源码站长:for循环老哥)
-
(暗夜逆向:涛哥)
-
(老六渗透:稻草人)
-
(旺仔安全:外挂人生)
由五个大佬共同创作课程设计,本人主讲。
第一期本团队需要进行六人磨合,第二期直播课本人张起灵主讲,所有学员学习问题收集后由五位大佬直播答疑。
课程:2024.10.22日开始录制
开发环境配置
-
安装vm虚拟机
-
-
安装RARwin解压工具
-
安装谷歌浏览器
-
安装易语言
-
安装精易编程助手
-
安装易语言助手
-
安装FD抓包软件
-
安装Typora笔记工具
-
安装抖音豆包AI
易语言零基础到精通
-
易语言基础语法
-
非开发环境与开发环境下的两种输出语句
-
变量的应用场景与作用域
-
协议开发接受返回数据
-
api接口、网页、爬虫数据、app
-
局部变量
-
程序集变量
-
全局变量
-
修改变量的值(如何改变变量储存的值)
-
变量连续赋值
-
-
常量的应用场景(常用的数据轻易和不改变的数据)
-
固定的参数
-
请求头信息
-
爬虫,逆向,post协议开发的时候
-
-
请求体信息
-
-
注释的用途以及开发中的技巧便利性
-
数据类型
-
文本型(api请求、爬虫、逆向)接受响应 数据在进行处理
-
整数型(多线程中设置线程数量,注册机:注册数量、循环:循环次数、金额处理)
-
逻辑型(判断一个数据是真还是假 修行者编程技术网的网站域名是多少=xiuhangzhe.com)
-
字节集 (对照的是acsll码的字符)
-
-
自定义数据类型
-
数据类型转换的应用场景
-
到文本
-
网页访问时返回的数据为字节集,全部是acsll码表示,我们需要数据类型转换到文本才能看懂
-
如果出现乱码,则进行编码处理
-
-
到整数
-
到字节集
-
图片使用字节集方式处理上传到服务器
-
-
-
操作符的使用以及应用场景
-
算术运算符
-
+(字符串拼接)
-
–
-
*
-
/
-
-
赋值运算符
-
= (赋值数据给变量、或者其他的组件)
-
+=
-
-=
-
!=(逻辑判断)
-
-
比较运算符
-
(>)(循环)
-
(<)循环)
-
(>=)循环)
-
(<=)循环)
-
-
逻辑运算符
-
-
位运算
-
-
流程控制
-
用于控制程序代码按照你的思想去执行
-
真()执行一段代码
-
假()执行代码
-
逻辑类型 真和假都会相应执行一段代码
-
-
循环语句
-
数组操作以及应用场景
-
跟变量创建一样只不过要在数组的位置随便输入个数字
-
赋值的时候使用大括号{} 每一个数组成员数据使用逗号隔开
-
数组索引 拿出数据收工 循环
-
-
子程序(函数、方法)
-
创建
-
使用(调用)
-
传参
-
确定子程序的作用
-
函数接收几个传参
-
传参的数据类型是什么
-
-
定义返回值
-
-
作用域讲解
-
函数与函数之间的变量数据是不共用
-
全局变量和程序集变量是优先读取在内存中的
-
优先
-
-
文本操作(处理文本型数据)
-
我们发送请求的时候
-
返回的协议头中提取协议头的值
-
-
接收返回数据用的上
-
请求 得到返回的字节集数据 字节集数据转换到文本型数据
-
文本型数据(网页代码) 、json数据(api接口) 、字典数据 (抖音加密)
-
寻找文本()
-
倒找文本()
-
文本替换()、请求头里面
-
子文本替换()请求头里面
-
文本比较() =
-
分割文本()= 计次循环
-
提取、修改、处理 +
-
-
-
磁盘操作
-
电脑:主板、CPU、内存条、电源、固态硬盘、机械硬盘、鼠标键盘,显示屏
-
操作系统:windows linux
-
易语言(代码)—-> 磁盘读取到内存(操作系统内存)
-
代码去操作文件夹中的文件
-
先控制磁盘,读入数据,写出数据,打开关闭,复制粘贴
-
常用磁盘操作
-
磁盘操作是基于要操作文件夹或者文件数据:图片、视频、文件夹、压缩包
-
-
文件读写
-
电脑或者手机安装软件
-
需要我们选择一个目录
-
安装的配置文件都会在选择的目录下面
-
我们软件运行是有一个沙盒环境
-
需要文件号才能进行txt文档操作
-
打开文件()获取文件号
-
注意事项要保证运行程序的目录必须有txt文件
-
打开文件()读写
-
分割文本
-
换行符分割:返回的数据类型是数组
-
取数组成员数:整数型
-
一元运算符
-
-
系统操作:系统处理
-
app注册机
-
黑客攻击软件
-
-
超级列表框
-
注册机或者其他软件爬虫:数据插入表
-
文本型,图片
-
表项:从上往下
-
表列:从左往右
-
插入数据的时候需要具备表项
-
-
多线程
多线程原理涉及操作系统如何在一个进程内同时运行多个线程,从而实现并行执行任务的能力。
-
线程的定义:
-
线程是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文件描述符等。
-
-
多线程的优点:
-
提高性能:多线程可以在多核处理器上并行执行任务,从而提高程序的响应速度和处理能力。
-
资源共享:线程之间的资源共享使得它们可以更高效地通信和协作。
-
简化编程模型:多线程可以将复杂的任务分解成多个小任务,每个线程负责一个或多个小任务,使编程和调试更加简单。
-
-
多线程的工作原理:
-
时间片轮转:操作系统通过时间片轮转(Time Slicing)的方式调度线程。每个线程被分配一个时间片来执行,当时间片用完后,操作系统切换到下一个线程。
-
上下文切换:当一个线程的时间片用完或被阻塞时,操作系统会保存当前线程的执行状态(称为上下文),然后加载下一个线程的上下文继续执行。
-
同步机制:为了避免多个线程同时访问共享资源导致的竞态条件,操作系统提供了同步机制,如互斥锁(Mutex)、信号量(Semaphore)和条件变量(Condition Variable)。
-
-
线程的生命周期:
-
创建:线程由操作系统创建,可以通过编程语言的线程库创建。
-
运行:线程在被调度时处于运行状态。
-
阻塞:线程在等待某些资源(如I/O操作)时会进入阻塞状态。
-
就绪:阻塞状态的线程在资源可用时会进入就绪状态,等待被调度。
-
终止:线程完成任务或被显式终止时会进入终止状态。
-
-
多线程的挑战:
-
竞态条件:多个线程同时访问共享资源可能导致数据不一致。
-
死锁:多个线程互相等待对方持有的资源,导致所有线程都无法继续执行。
-
线程安全:确保多线程程序在并发执行时不会出现不可预期的结果。
-
通过合理地设计和使用多线程,可以显著提高应用程序的性能和响应能力。但同时也需要小心处理可能出现的并发问题,以确保程序的正确性和稳定性。
操作多线程涉及创建、管理和同步线程,以确保它们能够有效地协同工作,同时避免常见的并发问题。以下是多线程操作的基本步骤和注意事项:
1. 创建线程
在大多数编程语言中,创建线程通常涉及以下步骤:
-
选择线程库:大多数编程语言都提供了线程库来创建和管理线程。
-
定义线程任务:编写一个函数或方法,作为线程要执行的任务。
-
创建线程对象:使用线程库提供的API创建线程对象,并将任务与线程关联。
-
启动线程:调用线程对象的启动方法,开始执行线程任务。
2. 管理线程
管理线程包括监控线程的状态、等待线程完成等操作:
-
等待线程完成:使用线程方法,等待线程执行完毕。
-
终止线程:在某些情况下,可能需要终止线程。注意,强行终止线程可能会导致资源泄漏或其他问题。
3. 同步线程
为了避免竞态条件和死锁等问题,需要使用同步机制来协调线程的执行:
-
互斥锁(Mutex):用于保护共享资源,确保同一时间只有一个线程可以访问该资源。
-
信号量(Semaphore):控制同时访问某个资源的线程数量。
-
条件变量(Condition Variable):允许线程在某个条件满足时等待或唤醒其他线程。
4. 处理并发问题
在多线程编程中,常见的并发问题包括竞态条件和死锁:
-
竞态条件:多个线程同时访问和修改共享数据时,可能导致数据不一致。解决方法包括使用互斥锁或原子操作。
-
死锁:多个线程互相等待对方持有的资源,导致所有线程都无法继续执行。解决方法包括使用资源分配图分析、避免嵌套锁等。
5. 线程池
对于需要频繁创建和销毁线程的情况,可以使用线程池来管理线程的生命周期,从而提高性能:
-
创建线程池:使用线程池库创建线程池对象。
-
提交任务:将任务提交给线程池,线程池会自动分配线程执行任务。
-
管理任务:线程池负责管理线程的创建和销毁,开发者只需提交任务。
总结
多线程操作的核心在于创建、管理和同步线程,同时注意处理并发问题。通过合理使用线程库和同步机制,可以有效地提高程序的性能和响应能力。
精易模块多线程(按钮事件启动主线程—–>主线程方法中调用功能子程序控制数量和线程数量 ——–>主线程中通过线程句柄控制任务执行(线程句柄是:线程_启动 ()的返回值)——->投递线程的时候防止程序多线程处乱使用(许可证)进行控制前面的线程结束后面的线程在开始(许可证进入线程上锁执行完毕解锁,下一个线程才可以执行)=(程序集与全局变量使用的过程中一定要使用许可证上锁)使用方法:在你功能子程序中使用(线程 _ 进入许可区、线程 _ 退出许可区)注意事项使用后一定要减掉线程执行数量否则会进入循环出不来。线程许可证是一个数据类型,在控制的时候需要今天添加变量创建。)
鱼刺类多线程=(创建三个程序集变量并且定义类型:主线程句柄:整数型、许可证:鱼刺类 _ 临界许可、鱼刺线程:鱼刺类 _ 线程操作 、鱼刺线程池:鱼刺类 _ 线程池Ex)启动子程序:使用(鱼刺线程.创建(&子程序名)启动主线程)启动主线程后,主程序整个子程序的作用为控制线程。
-
系统多线程
-
鱼刺多线程
-
线程_启动(&函数名字)
-
控制程序执行多线程作用
-
多线程的思维就是创建和使用多个线程,并且多次调用子程序
-
在使用多线程的时候需要先开发好子程序,方便我们的主线程进行调用
-
多线程你可以理解为多开的一种方式
-
单线程使用计次循环进行控制执行数量,并且需要获取线程句柄才可控制
-
线程句柄数量为你创建多少个线程数量,使用多线程返回的句柄为数组,一个线程对应一个句柄数组的值
-
如果想要控制主线程任务结束在执行按钮点击事件中线程后面的代码需要使用 线程等待()方法
-
-
专注鱼刺多线程使用
-
第一步:添加鱼刺多线程模块
-
第二步:创建程序集或者全局变量
-
第三步:变量中引用三个类型:鱼刺类 _ 临界许可、鱼刺类 _ 线程操作、鱼刺类 _ 线程池Ex
-
第四步:创建按钮进行控制程序多线程启动(按钮子程序中使用鱼刺类 _ 线程操作,创建多线程)
-
第五步:在主线程中进行线程池创建并且投递任务使用(鱼刺类_线程池Ex中的方法)
-
鱼刺线程池操作.创建() 作用:主线程中创建线程池数量
-
鱼刺线程池操作.投递任务() 作用:主线程中操作线程任务执行
-
鱼刺线程池操作.取_空闲线程数 () 作用:减去执行任务的线程数量得到空闲可用线程数量,就可以接着往下安排投递任务
-
鱼刺线程池操作.取_执行线程数 () 作用:得到正在执行任务的线程数量
-
鱼刺线程池操作.等待任务动态 () 作用:获取状态进行控制程序执行
-
鱼刺线程池操作.销毁() 作用:任务结束后进行结束线程池
-
注册数量大于线程数量太多的时候,需要进行控制投递
-
-
使用讲解,取空闲线程数量就等于是可使用的线程数,在投递的时候就可以使用取出来的空闲线程数量进行投递。有空闲就可继续操作多线程任务,投递任务数量的值等于已执行的线程数量,使用运算符空闲数量减去任务总数量减去执行数量进行比较就可以控制程序使用剩余线程数量执行任务操作。
-
-
-
POST协议入门
-
浏览器与网站交互过程中的所有关键组件和步骤
-
用户输入与解析()
-
用户输入URL:用户在浏览器地址栏输入想要访问的网址(URL)。
-
URL解析:浏览器会解析这个URL,识别出其中的协议(如http或https)、域名(或IP地址)、端口号(如果有指定)、路径以及查询字符串等组成部分。
-
-
网络连接与DNS解析
-
DNS查询:浏览器向DNS服务器发送查询请求,将域名转换为对应的IP地址。这个过程可能涉及多级DNS服务器的递归查询。
-
建立TCP连接:获取到IP地址后,浏览器会尝试与该IP地址对应的服务器建立TCP连接。这通常包括三次握手过程,以确保连接的稳定性和可靠性。
-
在建立TCP连接时,三次握手是一个关键的过程,用于确保客户端和服务器之间能够可靠地通信。这个过程包括以下三次握手:
-
第一次握手(SYN):
-
客户端向服务器发送一个SYN(Synchronize)包,请求建立连接。
-
这个包包含一个随机的初始序列号(Sequence Number)。
-
客户端进入SYN_SENT状态,等待服务器的确认。
-
-
第二次握手(SYN-ACK):
-
服务器接收到SYN包后,会发送一个SYN-ACK(Synchronize-Acknowledge)包作为响应。
-
这个包包含服务器生成的随机初始序列号,以及对客户端发送的SYN包的确认号(Acknowledgment Number)。
-
服务器进入SYN_RECV状态,表示收到了客户端的请求并回复了确认。
-
-
第三次握手(ACK):
-
客户端接收到服务器的SYN-ACK包后,会发送一个ACK(Acknowledge)包作为最后的确认。
-
这个包中包含对服务器SYN包的确认号,表示客户端已经收到了服务器的确认。
-
客户端和服务器都进入ESTABLISHED状态,表示连接已经成功建立。
-
通过这三次握手,客户端和服务器都确认了彼此的初始序列号,并确保了双方都愿意并且能够进行数据传输,从而保证了连接的稳定性和可靠性。
-
-
-
HTTP请求与响应
-
构建HTTP请求:一旦TCP连接建立成功,浏览器会构建一个HTTP请求。这个请求包括请求行(指定HTTP方法、请求的资源路径和HTTP协议版本)、请求头部(包含各种元数据,如User-Agent、Accept、Cookie等)以及请求体(对于POST等请求方法,包含要发送的数据)。
-
请求头(Request Headers)
-
Host: 指定请求的目标主机和端口号。例如,
Host: www.example.com
表示请求目标主机是www.example.com
,通常用于虚拟主机环境中,服务器根据Host头来确定处理请求的服务器。 -
User-Agent: 包含有关发出请求的用户代理(通常是浏览器)的信息。例如,
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
表示请求是由Chrome浏览器发出的。 -
Accept: 指定客户端能够处理的媒体类型,如
text/html
或application/json
。例如,Accept: text/html, application/xhtml+xml
表示客户端可以处理HTML和XHTML格式的内容。 -
Accept-Language: 指定客户端期望的自然语言,用于内容协商和本地化。例如,
Accept-Language: en-US, en;q=0.9
表示客户端首选美国英语,其次是其他类型的英语。 -
Accept-Encoding: 指定客户端支持的内容编码,如
gzip
或deflate
,用于压缩传输,优化性能。例如,Accept-Encoding: gzip, deflate
表示客户端支持gzip和deflate压缩格式。 -
Connection: 控制是否保持网络连接,如
keep-alive
表示保持连接,用于优化性能和减少连接开销。例如,Connection: keep-alive
表示保持连接,减少重复建立连接的开销。 -
Cookie: 包含服务器之前设置的cookie信息,用于跟踪会话状态等。例如,
Cookie: session_id=abc123
表示客户端已存储了名为session_id
的cookie。 -
Content-Type: 当请求中包含请求体时,此头部指定请求体的媒体类型。例如,
Content-Type: application/json
表示请求体是JSON格式的数据。 -
Content-Length: 指定请求体的长度(以字节为单位)。例如,
Content-Length: 123
表示请求体的长度为123字节。 -
Authorization: 包含认证信息,如Bearer令牌或基本认证凭据,用于保护资源和授权访问。例如,
Authorization: Bearer <token>
表示使用Bearer令牌进行认证。 -
Origin: 在跨域请求中,指定请求的源(协议、主机和端口),用于跨域资源共享(CORS)。例如,
Origin: http://example.com
表示请求是从http://example.com
发起的。 -
Referer: 指定请求是从哪个页面发起的(即上一个页面的URL),用于分析和授权。例如,
Referer: http://example.com/previouspage
表示请求是从http://example.com/previouspage
发起的。
-
-
其他请求头
-
Cache-Control: 用于指定缓存机制,如
no-cache
表示不使用缓存,max-age
指定缓存的最大时间。例如,Cache-Control: no-cache
表示不使用缓存,每次请求都从服务器获取最新内容。 -
If-Modified-Since: 只有在指定的时间后资源有更新时,服务器才返回新内容。例如,
If-Modified-Since: Sat, 29 Oct 2016 00:00:00 GMT
表示只有在2016年10月29日之后资源有更新时才返回新内容。 -
If-None-Match: 基于ETag的缓存机制,只有在ETag不匹配时才返回新内容。例如,
If-None-Match: "abc123"
表示只有在资源的ETag不等于abc123
时才返回新内容。 -
Pragma: 一种旧的缓存控制机制,通常用于兼容HTTP/1.0,如
no-cache
。例如,Pragma: no-cache
表示不使用缓存,与Cache-Control类似。 -
Upgrade: 请求服务器升级协议,如从HTTP/1.1升级到WebSocket。例如,
Upgrade: websocket
表示请求升级到WebSocket协议。 -
Via: 显示请求和响应通过的代理服务器。例如,
Via: 1.1 proxy.example.com
表示请求和响应通过proxy.example.com
代理服务器。 -
TE: 指定客户端愿意接受的传输编码,如
trailers
。例如,TE: trailers
表示客户端愿意接受包含trailers的响应。 -
Expect: 用于指定服务器必须满足的期望条件,如
100-continue
表示客户端期望服务器先返回一个状态码100以确认请求将继续。例如,Expect: 100-continue
表示客户端期望服务器先返回100状态码。 -
Range: 用于请求部分文件,常用于断点续传。例如,
Range: bytes=0-499
表示请求文件的前500个字节。 -
If-Range: 结合Range头部使用,指定只有在指定的ETag或日期匹配时才返回部分内容。例如,
If-Range: "abc123"
,Range: bytes=0-499
表示只有在ETag为abc123
时才返回文件的前500个字节。 -
DNT (Do Not Track): 请求服务器不要追踪用户行为,表示用户隐私偏好。例如,
DNT: 1
表示请求不追踪用户行为。 -
X-Requested-With: 通常用于指示请求是通过XMLHttpRequest发起的(如Ajax请求)。例如,
X-Requested-With: XMLHttpRequest
表示请求是通过Ajax发起的。 -
X-Forwarded-For: 记录请求的原始IP地址,通常在经过代理服务器时使用。例如,
X-Forwarded-For: 192.0.2.60
表示请求的原始IP地址是192.0.2.60
。 -
X-Forwarded-Proto: 记录请求的原始协议(如HTTP或HTTPS),通常在经过代理服务器时使用。例如,
X-Forwarded-Proto: https
表示请求的原始协议是HTTPS。 -
X-CSRF-Token: 用于防止跨站请求伪造(CSRF)攻击,通常需要在表单提交时包含。例如,
X-CSRF-Token: abc123
表示包含了CSRF令牌以防止攻击。 -
Content-Security-Policy (CSP): 定义内容安全策略,防止XSS攻击等。例如,
Content-Security-Policy: default-src 'self'
表示只允许从当前域加载资源。 -
X-Frame-Options: 控制是否允许页面被嵌入到iframe中,防止点击劫持。例如,
X-Frame-Options: DENY
表示不允许页面被嵌入到iframe中。 -
X-Content-Type-Options: 防止MIME类型嗅探,如
nosniff
。例如,X-Content-Type-Options: nosniff
表示禁止浏览器猜测内容的MIME类型。 -
Referrer-Policy: 控制Referer头的信息量,保护用户隐私。例如,
Referrer-Policy: no-referrer
表示不发送Referer头。
-
-
多数平台出现的是自己研究的算法附带请求头中
-
请求体一般都是提交数据(账号数据一般为表单提交和json格式提交或者其他类型)
-
-
发送HTTP请求:浏览器将构建好的HTTP请求发送给服务器。
-
服务器处理请求:服务器接收到HTTP请求后,会解析请求内容,并根据请求的资源路径和查询参数执行相应的逻辑处理。这可能包括访问数据库、执行服务器端脚本、生成动态内容等。
-
构建HTTP响应:服务器处理完请求后,会构建一个HTTP响应。这个响应包括状态行(指定HTTP状态码和原因短语)、响应头部(包含各种元数据,如Content-Type、Set-Cookie、Cache-Control等)以及响应体(包含要返回给浏览器的数据,如HTML页面、图片、JSON数据等)。
-
发送HTTP响应:服务器将构建好的HTTP响应发送给浏览器。
-
-
浏览器处理与页面渲染
-
接收并解析HTTP响应:浏览器接收到HTTP响应后,会解析响应内容。它会检查状态码以确定请求是否成功,并解析响应头部以获取额外的元数据。
-
处理Cookie和Session:如果响应头部中包含Set-Cookie字段,浏览器会保存这些Cookie信息,以便在后续的请求中发送给服务器。同时,服务器也可能使用Session来跟踪用户的会话状态。
-
缓存处理:浏览器会根据响应头部中的Cache-Control、Expires等字段来决定是否缓存该资源,以及缓存的有效期。这有助于减少后续请求的延迟和提高页面加载速度。
-
页面渲染:对于HTML响应,浏览器会解析HTML代码并构建DOM树(文档对象模型)。同时,它还会加载并解析CSS代码以构建CSSOM树(CSS对象模型)。然后,浏览器会将DOM树和CSSOM树合并成一个渲染树,并根据这个渲染树来绘制页面内容。这个过程可能涉及JavaScript的执行和DOM操作,以实现页面的动态效果和交互功能。
-
-
额外考虑与安全性
-
HTTPS加密通信:如果使用https协议,浏览器和服务器之间的通信会通过SSL/TLS进行加密,以确保数据传输的安全性和隐私性。
-
跨域资源共享(CORS):当浏览器尝试从一个域加载另一个域的资源时,会受到同源策略的限制。CORS是一种机制,允许服务器通过添加特定的响应头部来放宽这些限制,从而实现跨域资源共享。
-
防止XSS和CSRF攻击:浏览器和网站需要采取一系列安全措施来防止跨站脚本攻击(XSS)和跨站请求伪造攻击(CSRF)。这包括对用户输入进行验证和转义、使用安全的Cookie设置、实施验证码等。
-
性能优化:为了提高页面加载速度和用户体验,可以采取多种性能优化措施,如压缩和合并资源、使用CDN加速内容分发、优化图片和脚本加载等。
-
-
-
状态码
-
HTTP响应状态码是服务器在处理浏览器请求时返回的三个数字代码,用来表示请求的处理结果。状态码分为五大类,每类代表不同的处理结果。下面是HTTP状态码的详细分类及其典型用途:
1. 信息性状态码 (1xx)
这些状态码表明服务器已经接收到请求,并且正在处理中。
-
100 Continue:服务器已收到请求的初始部分,客户端可以继续发送剩余部分。
-
101 Switching Protocols:服务器根据客户端请求切换协议,常见于WebSocket协议的升级过程。
2. 成功状态码 (2xx)
这些状态码表明请求已被服务器成功接收、理解和处理。
-
200 OK:请求成功,返回请求的内容。这是最常见的状态码。
-
201 Created:请求成功并创建了新资源,通常用于POST或PUT请求。
-
202 Accepted:请求已被接受,但尚未处理完毕。通常用于异步处理请求。
-
204 No Content:请求成功,但响应没有实体内容。常见于DELETE或PUT请求。
-
206 Partial Content:请求成功,但只返回部分内容,通常用于分段下载(Range Requests)。
3. 重定向状态码 (3xx)
这些状态码表明客户端需要采取进一步的操作才能完成请求,通常用于URL重定向。
-
300 Multiple Choices:指示多个可用的资源,客户端可以选择其中一个。
-
301 Moved Permanently:请求的资源已被永久移动到新位置,客户端应更新其记录。
-
302 Found:请求的资源已临时移动到新位置,客户端应继续使用原URL。
-
303 See Other:请求的响应可以在另一个URI下找到,通常伴随一个GET请求。
-
304 Not Modified:请求的资源未修改,可以使用客户端缓存的内容。
-
307 Temporary Redirect:请求的资源已临时移动到新位置,保持请求方法不变。
-
308 Permanent Redirect:请求的资源已被永久移动到新位置,保持请求方法不变。
4. 客户端错误状态码 (4xx)
这些状态码表明客户端的请求包含错误或无法完成请求。
-
400 Bad Request:请求包含语法错误,服务器无法理解。
-
401 Unauthorized:请求需要用户授权,常见于未经身份验证的请求。
-
403 Forbidden:服务器理解请求,但拒绝执行,常见于权限不足。
-
404 Not Found:请求的资源在服务器上找不到。
-
405 Method Not Allowed:请求的方法不允许用于请求的资源。
-
406 Not Acceptable:服务器无法提供满足客户端Accept头部条件的内容。
-
408 Request Timeout:客户端请求超时。
-
409 Conflict:请求冲突,通常涉及资源的并发修改。
-
410 Gone:请求的资源已被永久删除,且无替代资源。
-
413 Payload Too Large:请求的内容超出服务器的处理能力。
-
415 Unsupported Media Type:请求的内容类型不受支持。
-
429 Too Many Requests:客户端发送的请求过多,通常用于限流。
5. 服务器错误状态码 (5xx)
这些状态码表明服务器在处理请求时发生内部错误。
-
500 Internal Server Error:服务器遇到未知的错误,无法完成请求。
-
501 Not Implemented:服务器不支持完成请求所需的功能。
-
502 Bad Gateway:服务器作为网关或代理时,从上游服务器接收到无效响应。
-
503 Service Unavailable:服务器当前不可用,通常由于过载或维护。
-
504 Gateway Timeout:服务器作为网关或代理时,无法及时从上游服务器获得响应。
-
505 HTTP Version Not Supported:服务器不支持请求中使用的HTTP协议版本。
-
-
-
协议的用途
-
-
GET
-
用途: 获取指定资源的数据。常用于从服务器读取数据,例如网页、图片、文档等。
-
示例:
GET /users/1
请求获取 ID 为 1 的用户信息。
2. POST
-
用途: 向服务器提交数据,用于创建新资源或执行某些操作。常用于表单提交、文件上传等。
-
示例:
POST /users
提交表单数据以创建新用户。
3. PUT
-
用途: 更新或替换指定资源。PUT 请求用于完全替换现有资源,而不是部分更新。
-
示例:
PUT /users/1
更新 ID 为 1 的用户的所有信息。
4. DELETE
-
用途: 删除指定资源。DELETE 请求用于从服务器中删除指定的资源。
-
示例:
DELETE /users/1
删除 ID 为 1 的用户。
5. HEAD
-
用途: 获取资源的头部信息而不返回实体内容。常用于检查资源的有效性、大小、最后修改时间等。
-
示例:
HEAD /users/1
获取 ID 为 1 的用户资源的头部信息。
6. OPTIONS
-
用途: 获取目标资源的通信选项。服务器通常会返回一个允许使用的 HTTP 方法列表。
-
示例:
OPTIONS /users
获取服务器对/users
路径支持的 HTTP 方法。
7. PATCH
-
用途: 对资源进行部分修改。PATCH 请求用于对资源的部分字段进行更新,而不是完全替换。
-
示例:
PATCH /users/1
更新 ID 为 1 的用户的部分信息,如只更新其电子邮件地址。
8. TRACE
-
用途: 执行一个消息环回测试,服务器会将接收到的请求返回给客户端。常用于调试。
-
示例:
TRACE /debug
执行一个环回测试请求,服务器将请求内容返回给客户端。
9. CONNECT
-
用途: 建立一个到目标资源的网络连接,通常用于代理服务器。客户端通过 CONNECT 请求建立一个隧道,以便与目标服务器进行通信。
-
示例:
CONNECT example.com:443
建立一个到example.com
的 HTTPS 连接。
-
-
-
实战协议开发(实战协议分析)
-
网址发来
-
爬取数据(如果不强制必须要账号的网站可以直接爬行)
-
注册机(账号密码注册登录,手机号登录注册)
-
引流营销(签到,点赞,关注,评论,转发,私信,加好友,发帖,发视频)
-
你自己还是客户 有利可图才干
-
网址、先打开F12、浏览器刷新、保留日志、然后去挨个点击包查看、或者直接搜索
-
css,js,图片格式png jpg data:base64
-
列表格式,文档格式
-
-
-
简单注册机开发
-
超级列表框
-
多线程
-
-
插课实战开发埃安注册机
-
开发需求:手机号接码注册设置随机密码即可
-
在获取验证码的过程中需要打码
-
实战开发第一步:开发接码API
-
代码如何重复利用
-
自己封装一个易语言模块
-
精易模块源码下载后进行编译即可
-
-
第二步:开发IP代理
-
最后账号密码注册完毕后导出(精易模块随机生成字母)
-
寻找接码api代理平台(不低于5个:支持埃安注册)
-
寻找代理API接口
-
寻找拨号上网销售平台
-
寻找打码点选平台接口
-
py本地打码部署
-
e本地打码部署
-
-
wordpress网址信息收集软件开发
-
Acunetix-v24.9.24-Windows 安装网址漏洞扫描工具
-
域名+漏洞api 获取管理员用户名
-
域名+未授权 获取wordpress站点用户名
-
-
网页填表零基础入门到精通
-
浏览器支持库零基础入门到精通
-
APP模拟器自动化零基础入门到精通
-
易语言操作mysql
-
易语言服务端开发
-
易语言模块开发(防破解专用)
-
实战接码平台对接
-
实战打码平台对接
-
实战代理平台对接
-
实战爬虫软件
-
实战注册机
-
实战营销软件
-
易语言UI万能模板(注册机、黑客压力测试、网站后台爆破工具、撞库软件、爬虫软件、营销软件。。。等)
-
组件1 :高级选择夹
-
组件2:超级列表框
-
类型:报表列表框
-
显示表格线:真
-
-
组件3:组合框
-
类型:不可编辑下拉式
-
现行选中项:0
-
-
组件4:透明标签
-
组件五:编辑框
-
组件六:按钮
-
组件七:分组框
-
-