go 跨域问题解决
我在go中其实已经写好了corsMiddleware中间件,只需要给每一个请求都套上即可。
1 | func main() { |
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
1 | const ApiService = { |
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。
我在go中其实已经写好了corsMiddleware中间件,只需要给每一个请求都套上即可。
1 | func main() { |
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
1 | const ApiService = { |
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。
希望可以处理一下旧的文本内容,之前文章的数据全都变成了一行,希望可以根据语义进行分段。
这里找到的是spaCy这个库。
通过这个网站获取需要使用的命令进行安装即可
设置power shell的代理
1 | $proxy='http://127.0.0.1:7890' |
1 | $ENV:ALL_PROXY ='http://127.0.0.1:7890' |
在程序开发以及网络通信传输过程中最常见的数据格式就是JSON、XML,或者是一种压缩效率更高的数据格式——Google的ProtoBuf。ProtoBuf在传输过程中是以二进制的格式传输的,测试抓包的时候如果需要查看请求或返回消息中携带的参数信息就需要对它进行解析。小编之前在Windows环境下使用公司童鞋开发的Fiddler插件可以完成解析工作,但小编在家办公使用的抓包工具是Mac上的Charles。对于不熟悉Charles的小编而言,如何借助Charles来解析并展示ProtoBuf中的内容就尤为重要。本文就介绍一下小编尝试的几种在Mac环境中将ProtoBuf数据流转换为可以直观观察的数据格式的方法。。
Protocol buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers是一种灵活,高效,自动化机制的结构数据序列化方法-可类比XML,但是比XML更小(3
10倍)、更快(20100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows、Mac、Linux上使用,安装Charles的时候要先装好Java环境。Charles的具体安装方法就不在此详细展开了,但是Charles应该算是Mac上最好用的抓包工具了。下面详细介绍下使用Charles查看PB文件的方法。
通过阅读Charles关于ProtoBuf的官方文档可以得出当Content-Type的类型为application/x-protobuf时,通过Charles查看内容可以使用两个新的HTTP正文内容查看器,Protobuf文本查看器和Protobuf结构化查看器。但是小编在测试过程中发现我们的请求的Content-type并不是application/x-protobuf的,而是text/plain; charset=utf-8的,所以考虑使用Charles的Rewrite功能将Content-type修改替换一下。
正常看到的请求如下图所示:
打开Tools->Rewrite界面配置,新增配置如下:
其中规则的详细配置是:
配置完成之后再去请求就可以看到Content-Type如下图所示。
此时就可以在Contents中看到对应的ProtoBuf以及ProtoBuf Text内容了。
需要注意的是使用这种方式查看到的都是ProtoBuf里的value内容,没有对应的key,所以可读性较差,下面介绍可读性更强的第二种方式。
一、生成ProtoBuf的.desc解析文件
protoc工具安装:如果想解析一个ProtoBuf数据流,就必须要有对应的.proto文件,Charles需要一个.proto文件转换的.desc文件才能完成后续的解析工作。首先需要在Mac上安装protoc工具:brew install protobuf。
执行protoc –version能够展示以下内容就代表protoc工具安装成功了。
单个proto文件生成.desc文件:将proto_test.proto文件放到固定路径/xx/下,然后执行命令:protoc -I=/xx/ –descriptor_set_out=/xx/proto_test.desc /xx/proto_test.proto就可以在对应路径下生成proto_test.desc文件了。
多个proto文件生成.desc文件:多个proto文件对应生成一个desc文件命令:protoc -I=/x/xx/ –descriptor_set_out=/x/xx/test.desc /x/xx/a.proto /x/xx/b.proto。
二、解析ProtoBuf格式
PB文件未解析时的Request和Response内容如下,可以看到基本全是乱码,可读性极差,通过添加之前生成的.desc文件并配置解析规则就完成PB文件的解析工作,步骤如下:
View Request/Response As:在对应的请求上右键选择View Request(Response) As->Protocol Buffers。
添加.desc文件:进入Charles提供的解析ProtoBuf的配置界面后,可通过点击Open Descriptot Registry将自己的ProtoBuf描述性文件(.desc文件)注册进去。
Descriptor Registry有两个默认支持的desc描述文件,我们可通过点击add添加自己需要的desc文件。
配置message type:添加成功后,可以在Message type中搜索需要解析的消息体对应的ProtoBuf Message,并配置对应的payload encoding。
设置成功后,可以通过ProtoBuf以及ProtoBuf Text两种方式查看PB数据,其中ProtoBuf Text可以看到二进制的消息体已经转换为可以直观查看的类似JSON的数据体了,到此为止简单的PB数据解析工作就告一段落了。
Viewer Mappings功能:View Request/Response As功能只能设置单一请求的request body或者response body的proto解析,但如果是批量请求的解析需要进行大量的重复性工作,比较繁琐,具有较差的便利性,此时可通过Viewer Mappings功能解决该问题。
Protobuf Settings功能:desc文件的添加不仅可以通过Viewer Mappings功能和View Request/Response As功能,还可以通过菜单栏上的Protobuf Settings功能进行设置。
解释什么是 Slack App:介绍 Slack App 的概念和功能,以及它如何为用户提供沟通和协作的平台。
slack类似于一个全端聊天工具,是一款企业级的团队协作和沟通工具。提供了bot接口,可以让开发者自己开发应用。
利用slack的app来实现gpt问答功能
增加语音对话,其实没什么东西,使用slack的app会有发送语音的功能,然后机器人将语音->文本->gpt->语音即可
这个其实是看微信公众号的一个人割韭菜发的,然后简单实现了一下,理论上讲功能差距应该不大。
文案机器人,各种不同的对话。没啥乱用,直接用Chat GPT也可以实现
说明问答机器人的用途和好处:阐述为什么开发一个问答机器人对于团队或组织来说是有价值的,例如提高效率、解答常见问题等。
Slack 工作区的创建和设置:演示如何创建一个新的 Slack 工作区,并设置所需的频道和权限。
创建一个新的 Slack App:步骤展示如何创建一个新的 Slack App,并选择适当的权限和功能。
这里我简单演示一下
生成认证令牌和安装应用到工作区:演示如何生成用于认证的令牌,并将应用程序安装到 Slack 工作区中。
pip install -i https://mirrrors.cloud.tencent.com/pypi/simple
pip install --proxy http://127.0.0.1:7890
chat_update
更新文本–流式输出(很丑陋,没有Claude的优雅)chat_postMessage
发送消息files_upload_v2
上传文件conversations_replies
读取历史文本(可选)@app.event("app_mention")
驱动进程app_mention
监听@事件View messages that directly mention @chatgpt in conversations that the app is in
channel_id
以及thread_ts
固定对话conversations_replies(channel, ts)
提供channel_id以及thread_ts即可获取对话历史首先查看服务器当前时区
1 | date -R |
然后使用
1 | apt-get install -y tzdata |
docker需要给权限才可以修改相关数据
启动时增加命令
1 | --privileged=true |
root通过magisk
首先需要下载镜像
打开开发者模式,狂戳Setting -> Build number,打开USB调试,Setting -> System -> Developer Options打开Usb debugging,勾选oem unlocking
之后打开usb调试使用adb reboot bootloader或者关机后按开机键+音量下键
然后下载android-platform-tools工具包
解压下载的镜像文件以及内部的zip文件
然后运行flash-all.bat等待刷机成功
之后安装magisk
然后将解压后的boot.img文件push到手机中
1 | adb push ./blueline-rq2a.210505.002/image-blueline-rq2a.210505.002/boot.img sdcard/Download |
然后打开magisk选择安装然后修补选择boot.img等待修补完成后会生成一个patched将它pull到本地
1 | adb pull /sdcard/Download/magisk_patched-23000_J2eHI.img |
之后进入fastboot adb reboot bootloader
然后fastboot解锁,fastboot flashing unlock
如果已解锁则跳过
然后刷入patched.img
1 | fastboot flash boot magisk_patched-23000_J2eHI.img |
之后重启手机就行了。
刷入电信支持
github下载china_telecom_supporter,https://github.com/apporc/china_telecom_supporter
把压缩包push到手机上adb push ./china_telecom_supporter.zip /sdcard/Download
adb命令解压
1 | unzip -d /sdcard/Download/china_telecom_supporter /sdcard/Download/china_telecom_supporter.zip |
移动解压后的文件夹到系统目录/data/adb/modules/
1 | mv /sdcard/Download/china_telecom_supporter /data/adb/modules/china_telecom_supporter |
删除 fdr_check 文件rm /data/vendor/modem_fdr/fdr_check
重启,如果刷入成功此时进入系统可以看到电信的信号了,能正常打电话和流量上网~
如果利用模拟浏览器等方式通过验证码会遇到验证码每次请求都会变,那么这样就不能直接请求获取到验证码数据了。
所以这里其实直接通过js下载图片就行了。
1 | let c = document.createElement('canvas');let ctx = c.getContext('2d'); |
这里的base64String就是当前验证码的base64地址了
申请链接 link
点击后可看到如下页面,点击右上角的create an app
点击apply
填写基本信息
填写完信息后同意条款,务必绑定手机号
然后验证邮件
填写基本信息
确认信息
同意协议和政策
提交后等待48小时知晓结果
如果通过后,那么需要发送一下进一步激化,然后发送邮件即可。
发现登录提示需要手机号验证,但是输入手机号都不可以发送短信。
然后看到提示说联系微软客服来进行操作。
1 | 您好,欢迎咨询Microsoft 社区,我是Li,很荣幸能为您提供技术支持。 |
然后呢,我就找到了这个链接[联系 - Microsoft 支持部门](https://support.microsoft.com/zh-cn/home/contact?SourceApp=smc2&ContactUsExperienceEntryPointAssetId=S.HP.SmcContactUsLanding)
之后下面有一个登录以联系支持人员
点击按钮,然后发现弹出来的一个框是一个英文的,然后输入手机号发现居然可以发送短信了。
推荐使用anaconda管理python版本,或者别的虚拟环境对python进行管理。
首先新建一个python版本
1 | conda create --name py39 python=3.9 |
然后进入环境安装jupyter
1 | conda activate py39 |
如果报错的话,应该是因为pip的版本低
可以更新一下pip的版本
1 | pip install --upgrade pip |
然后设置一下密码
1 | 生成配置文件 |
之后执行命令启动即可
1 | jupyter notebook --ip 0.0.0.0 --allow-root |