介绍前面介绍了利用Trojan进行搭建,本文采用Vmess实现搭建。
vmess原理本地v2rayN客户端配置vmess服务器,需要确定:
服务器ip地址
端口
用户id(直接生成)
额外id(默认为0):在原id基础上,多生成id的数量,0表示启用AEAD
加密方式
传输协议
在服务器端的v2ray上需要确定:
监听ip
端口
用户id(与本地相同)
额外id
传输协议
当本地在google上进行搜索的时候,通过系统代理将请求发送到v2rayN客户端,它会自动确定一种加密方式(aes)将搜索请求进行加密,并将加密方式(aes)和密钥加在头部。
随后,vmess会用用户id对加密方式和密钥进行加密,并在头部插入其他数据(为当前时间戳正负30秒范围内的随机值+用户id组成的hash字符串),最后在头部加上目标的ip地址后进行传输。
服务器端的vmess收到数据后,通过不同时间戳生成许多hash字符串验证头部的hash字符串是否合法,合法后,利用用户id进行解密,得到加密方式和密钥。
最后用加密方式和密钥进行解密得到请求。
但是它存在被精确探测的漏洞,一段时间内头部是可以一样的,通 ...
介绍前面介绍了利用SS+plugin进行搭建,本文采用Trojan实现搭建。
原理https原理HTTPS(HyperText Transfer Protocol Secure)是HTTP(超文本传输协议)的安全版本,用于在客户端(如浏览器)与服务器之间加密通信,以确保数据传输的安全性。它通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议实现加密,防止数据在传输过程中被窃听、篡改或伪造。
要想实现https,首先在服务器端,需要利用自身的域名来向CA机构申请证书,其中包含用于非对称加密的公钥,并且服务器会生成唯一的私钥。
当本地客户端需要对服务器进行https访问时,服务器会提供一个SSL/TLS证书,这个证书包含服务器的公钥和由可信的证书颁发机构(CA)签名的服务器身份信息。
客户端确保证书之后(属于受信任的根证书颁发机构验证证书),会生成对称加密密钥,并且利用公钥进行加密发送给服务器,随后服务器利用私钥进行解密得到对称加密密钥后,双方就可以使用这个只有双方知道的对称加密密钥进行数据的加密传输(即使数据被截 ...
介绍本片文章内容主要记录本人对节点搭建合集的学习记录,本章主要记录网络通信的一些基础知识。
网络通信的基本过程下图为本小节的网络结构的例子。
DNS解析首先对一台电脑打开浏览器后输入baidu.com进行搜索这一动作进行分析。
对于域名baidu.com,首先需要得到这个域名对应的ip地址,这个地址首先通过检查浏览器缓存寻找
若没有浏览器记录则检查本地缓存即检查本地hosts文件是否有映射关系
若还未找到,则会去请求电脑所配置的DNS服务器。其中DNS解析示意图如下所示。
DNS请求发送过程DNS为应用层的协议,其主要用于获取域名所绑定的ip地址。本地向DNS服务器具体发送请求的方式如下图所示。
首先在应用层生成请求
在传输层封装源端口和目标端口
接着传到网络层加上本机的ip和DNS服务器ip,当电脑找不到目标的ip地址之后,继续将数据包发送到网关(家中一般是路由器)
在同一个局域网同通信,一般是采用MAC地址进行通信,因此在数据链路层会继续添加源MAC地址(通过ARP协议获取到网关地址)和本机MAC地址
随后将封装好的数据包从物理层即通过网卡从网线发出去达到交换机的位置
交换机 ...
介绍哈希表是一种常见且高效的数据结构,通常用于快速判断元素是否出现过、统计元素频率等操作。本文目前记录了使用python中数据结构的一些解题方法和区别,包括以下内容:
Python 中常用的哈希表实现方式。
各种哈希表结构在不同问题中的应用与选择。
哈希表python中实现哈希表的方法一般有如下几种:
dict()
set()
collections.defaultdict
dict()dict() 是 Python 中最常用的哈希表实现,基于哈希函数将键映射到一个数组中,以常数时间复杂度 O(1)完成查找、插入和删除操作。典型的使用场景包括统计字符频率、记录元素的索引位置等。但是其在使用的过程中,访问一个不存在的键会抛出 KeyError 异常,因此在访问之前通常需要检查键是否存在。
12345my_dict = {}if 'key' in my_dict: value = my_dict['key']else: value = 'default_value'
set()set()是一 ...
介绍本文章主要记录Git基本知识,内容包括:
Git的基本配置
暂存和提交
分支和合并
rebase用法
远程库的操作
子模块的用法
Git的基础用法Git的基础配置创建一个本地Git版本库,可以使用以下命令:
12git init 让当前文件夹变成 git 仓库(创建 .git 文件夹)git init folder 创建一个名为"folder"新的文件夹并初始化为 git 仓库
进行Git账号配置,若添加global的话则是本地创建的所有版本库都会遵循这个配置,若想单独配置则需要在项目文件夹里输入同时不加--global。
12git config --global user.name "你的用户名"git config --global user.email "你的邮箱"
可以用以下命令查看配置:
1git config --list
Git的暂存首先对文件夹内进行修改,比如在文件夹中加入file.txt文件,并且里面写入一些内容,随后可以使用以下命令加入到暂存区:
123git add file.txt或者git ...
介绍在本教程中,记录使用Huggingface Transformers库在自己选择的数据集上对BERT(和其他 Transformer 模型)进行文本分类微调的示例。原文本文采用的微调数据集为The 20 newsgroups text dataset.
微调与预训练的区别
预训练(Pre-training):代码中从零开始训练一个BERT模型,使用的是cc_news数据集,并进行了掩码语言模型(MLM)的训练任务。这属于预训练,因为是在通用数据集上训练模型,以学习语言的基本表示。
微调(Fine-tuning):如果使用一个已经预训练好的BERT模型,然后在特定任务的数据集(例如文本分类、命名实体识别等)上进行进一步的训练,这就是微调。微调通常是在预训练的基础上进行的,目标是让模型适应特定的下游任务。
模型训练代码导入必要的库12345678import torch from transformers.file_utils import is_tf_available, is_torch_availablefrom transformers import BertTokenize ...






