微软new bing chatgpt 逆向爬虫实战
gospider 介绍
gospider 是一个golang 爬虫神器,它内置了多种反爬虫模块,是golang 爬虫必备的工具包
安装
go get -u gitee.com/baixudong/gospider
gitee地址
https://gitee.com/baixudong/gospider
github地址
https://github.com/baixudong007/gospider
开始new bing 逆向
通过抓包得到websocket 地址
分析websocket 发送参数
这里一连接就连续发送三个 text 类型的数据,其中第一个数据为
{"protocol":"json","version":1}
第二个数据为
{"type":6}
第三个数据为
{"arguments":[{"source":"cib","optionsSets":["nlu_direct_response_filter","deepleo","disable_emoji_spoken_text","responsible_ai_policy_235","enablemm","dlislog","dloffstream","dv3sugg","harmonyv3"],"allowedMessageTypes":["Chat","InternalSearchQuery","InternalSearchResult","InternalLoaderMessage","RenderCardRequest","AdsQuery","SemanticSerp"],"sliceIds":["0113dllog","216dloffstream"],"traceId":"63f8b16700104c9db4609875735e3f12","isStartOfSession":true,"message":{"locale":"ru-RU","market":"ru-RU","region":"US","location":"lat:47.639557;long:-122.128159;re=1000m;","locationHints":[{"country":"United States","state":"Pennsylvania","city":"Pittsburgh","zipcode":"15211","timezoneoffset":-5,"dma":508,"countryConfidence":9,"cityConfidence":5,"Center":{"Latitude":40.4393,"Longitude":-80.0213},"RegionType":2,"SourceType":1}],"timestamp":"2023-02-24T20:45:32+08:00","author":"user","inputMethod":"Keyboard","text":"你好","messageType":"Chat"},"conversationSignature":"Qf1G4jxAl5c2h1frcuYraT8+4L4f9IfjvARi+xT+IoI=","participant":{"id":"844428589040485"},"conversationId":"51D|BingProd|36AD9D4018B442F39EC6E4055099E8E728B019942E0F02A1C99016EA127A3E0E"}],"invocationId":"0","target":"chat","type":4}
第一个数据和第二个数据简单易懂,第三个数据有很多没有用的参数,这里删除精简后如下
{"arguments":[{"conversationId":conversationId,"source":"cib","isStartOfSession":isStartOfSession,"message":{"text":text,"messageType":"Chat"},"conversationSignature":conversationSignature,"participant":{"id":clientId}}],"invocationId":"1","target":"chat","type":4}
第三个数据,四个变量:
- conversationId /turing/conversation/create 处获得
- conversationSignature /turing/conversation/create 处获得
- clientId /turing/conversation/create 处获得
- isStartOfSession 是否是会话的第一个问题
- text 要问的问题
获取conversationId,conversationSignature,clientId 值。通过抓包分析
只要带上登录信息,发送这个请求,就可以得到以上三个值了,这一步没有难度。登录的cookie 为 _U ,只要_U 这个值就可以了
参数都准备完毕了,现在我们一起通过代码演示下。
首先获取 conversationId,conversationSignature,clientId
reqCli, err = requests.NewClient(nil)if err != nil {log.Panic(err)}response, err := reqCli.Request(nil, "get", "https://www.bing.com/turing/conversation/create", requests.RequestOption{Cookies: "登录的cookies",})if err != nil {log.Panic(err)}jsonData := response.Json()conversationId := jsonData.Get("conversationId").String()clientId := jsonData.Get("clientId").String()conversationSignature := jsonData.Get("conversationSignature").String()
发送websocket 请求
Response, err := reqCli.Request(nil, "get", "wss://sydney.bing.com/sydney/ChatHub")if err != nil {log.Panic(err)}wsCli := Response.WebSocket()if err = wsCli.Send(context.TODO(), websocket.MessageText, append(tools.StringToBytes(`{"protocol":"json","version":1}`), 0x1e)); err != nil {log.Panic(err)}if err = wsCli.Send(context.TODO(), websocket.MessageText, append(tools.StringToBytes(`{"type":6}`), 0x1e)); err != nil {log.Panic(err)}data := map[string]any{"arguments": []map[string]any{map[string]any{"source": "cib","isStartOfSession": isStartOfSession,"message": map[string]any{"text": text,"messageType": "Chat",},"conversationSignature": conversationSignature,"participant": map[string]any{"id": clientId,},"conversationId": conversationId,},},"invocationId": "1","target": "chat","type": 4,}if err = wsCli.Send(context.TODO(), websocket.MessageText, append(tools.StringToBytes(tools.Any2json(data).Raw), 0x1e)); err != nil {log.Panic(err)}
接受微软回答的消息
var offset intrun:=truefor run{msgType, msgCon, err := wsCli.Recv(context.TODO())if err != nil {log.Panic(err)}if msgType == websocket.MessageText {msgData := tools.Any2json(msgCon)switch msgData.Get("type").Int() {case 1:txt := msgData.Get("arguments.0.messages.0.text").String()lls := []rune(txt)fmt.Print(string(lls[offset:]))offset = len(lls)case 2:log.Print(msgData)run=false}}
这样就可以和new bing 愉快的玩耍了
注意事项
- isStartOfSession 会话的第一个问题为true,后面几个问题为false
- 发送text 消息时要在文本的末尾添加1e 这个字符。
微软new bing chatgpt 逆向爬虫实战相关推荐
- python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解
爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...
- js逆向爬虫实战之快手第三方平台之获取登录cookies!
爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...
- 《爬虫逆向进阶实战》书籍介绍
<爬虫逆向进阶实战>书籍介绍 内容简介 <爬虫逆向进阶实战>以爬虫逆向方向的相关技术和岗位要求进行撰写,结合作者多年工作经验,总结了爬虫的架构体系.主流框架.技术体系和未来发展 ...
- ChatGPT已接入微软必应Bing搜索?如何进入新必应候补名单抢先体验
文章目录 1. 前提 2. 开始申请 3. 直接使用ChatGPT 1. 前提 Edge浏览器 微软账号 科学上网工具 2. 开始申请 进入新必应网址:https://www.bing.com/new ...
- 英伟达4070Ti 6499元起/ 微软要推出ChatGPT版Bing/ 苹果头显被曝售价3000美元... 今日更多新鲜事在此...
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好~今天是新年的第一个星期三--还有两天又到周末啦. 科技圈还有哪些有意思的事? 日报君在此呈上~ 微软要推出ChatGPT版Bing搜索 ...
- python爬虫实战之逆向分析酷狗音乐
文章目录 前言 一.请求分析 二.逆向思路 三.全部代码 总结 前言 声明:本文章只是用于学习逆向知识,仅供学习,未经作者同意禁止转载 对于爬虫而言,不管是什么类型的都会遵循这几个步骤 获取目标url ...
- Python3 爬虫实战 — 58同城武汉出租房【加密字体对抗】
爬取时间:2019-10-21 爬取难度:★★★☆☆☆ 请求链接:https://wh.58.com/chuzu/ 爬取目标:58同城武汉出租房的所有信息 涉及知识:网站加密字体的攻克.请求库 req ...
- 拼多多回应将总部从中国迁至爱尔兰:严重失实;微软开放 Bing Chat 访问,无需等待;OpenAI 亏损翻倍|极客头条
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 微软“最强自动化工具”playwright实战项目
微软"最强自动化工具"playwright实战项目 近期微软推出了一款号称"最强"的自动化测试工具,网上便出现了大批讲解文章,一看全是github上的reade ...
最新文章
- 高并发:RocketMQ 削峰实战
- 非单身勿点,这里是单身汪专属情人节~
- PyImport_ImportModule返回值=null
- Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
- Opencv Kmeans聚类算法
- microsoft query尚未安装的原因和方法
- mac java maven 设置
- Ubuntu 查看操作系统的位数
- 全国计算机等级考试题库二级C操作题100套(第48套)
- android studio云测,Android studio 下的robotium自动化测试和持续集成
- update mysql php_PHP的MySQL的更新update
- 2106. [NOIP2015] 斗地主
- linux下syslog命令,syslog命令
- NLPIR使用(1)
- 银行舆情监测-TOOM舆情监测系统
- Android MTK TP Driver 触屏驱动
- 人脸检测FDDB测试ROC曲线生成
- 广义矩方法(GMM)与动态面板数据简述
- Oracle-数据库所有查询命令
- BCD码中的8421码 2421码 5421码和余3码的简单使用