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}

第三个数据,四个变量:

  1. conversationId /turing/conversation/create 处获得
  2. conversationSignature /turing/conversation/create 处获得
  3. clientId /turing/conversation/create 处获得
  4. isStartOfSession 是否是会话的第一个问题
  5. 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 愉快的玩耍了

注意事项

  1. isStartOfSession 会话的第一个问题为true,后面几个问题为false
  2. 发送text 消息时要在文本的末尾添加1e 这个字符。

微软new bing chatgpt 逆向爬虫实战相关推荐

  1. python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...

  2. js逆向爬虫实战之快手第三方平台之获取登录cookies!

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...

  3. 《爬虫逆向进阶实战》书籍介绍

    <爬虫逆向进阶实战>书籍介绍 内容简介 <爬虫逆向进阶实战>以爬虫逆向方向的相关技术和岗位要求进行撰写,结合作者多年工作经验,总结了爬虫的架构体系.主流框架.技术体系和未来发展 ...

  4. ChatGPT已接入微软必应Bing搜索?如何进入新必应候补名单抢先体验

    文章目录 1. 前提 2. 开始申请 3. 直接使用ChatGPT 1. 前提 Edge浏览器 微软账号 科学上网工具 2. 开始申请 进入新必应网址:https://www.bing.com/new ...

  5. 英伟达4070Ti 6499元起/ 微软要推出ChatGPT版Bing/ 苹果头显被曝售价3000美元... 今日更多新鲜事在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好~今天是新年的第一个星期三--还有两天又到周末啦. 科技圈还有哪些有意思的事? 日报君在此呈上~ 微软要推出ChatGPT版Bing搜索 ...

  6. python爬虫实战之逆向分析酷狗音乐

    文章目录 前言 一.请求分析 二.逆向思路 三.全部代码 总结 前言 声明:本文章只是用于学习逆向知识,仅供学习,未经作者同意禁止转载 对于爬虫而言,不管是什么类型的都会遵循这几个步骤 获取目标url ...

  7. Python3 爬虫实战 — 58同城武汉出租房【加密字体对抗】

    爬取时间:2019-10-21 爬取难度:★★★☆☆☆ 请求链接:https://wh.58.com/chuzu/ 爬取目标:58同城武汉出租房的所有信息 涉及知识:网站加密字体的攻克.请求库 req ...

  8. 拼多多回应将总部从中国迁至爱尔兰:严重失实;微软开放 Bing Chat 访问,无需等待;OpenAI 亏损翻倍|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  9. 微软“最强自动化工具”playwright实战项目

    微软"最强自动化工具"playwright实战项目 近期微软推出了一款号称"最强"的自动化测试工具,网上便出现了大批讲解文章,一看全是github上的reade ...

最新文章

  1. 高并发:RocketMQ 削峰实战
  2. 非单身勿点,这里是单身汪专属情人节~
  3. PyImport_ImportModule返回值=null
  4. Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
  5. Opencv Kmeans聚类算法
  6. microsoft query尚未安装的原因和方法
  7. mac java maven 设置
  8. Ubuntu 查看操作系统的位数
  9. 全国计算机等级考试题库二级C操作题100套(第48套)
  10. android studio云测,Android studio 下的robotium自动化测试和持续集成
  11. update mysql php_PHP的MySQL的更新update
  12. 2106. [NOIP2015] 斗地主
  13. linux下syslog命令,syslog命令
  14. NLPIR使用(1)
  15. 银行舆情监测-TOOM舆情监测系统
  16. Android MTK TP Driver 触屏驱动
  17. 人脸检测FDDB测试ROC曲线生成
  18. 广义矩方法(GMM)与动态面板数据简述
  19. Oracle-数据库所有查询命令
  20. BCD码中的8421码 2421码 5421码和余3码的简单使用

热门文章

  1. 知道甘特图吗?会画甘特图吗?管项目经常用到甘特图吗?
  2. 关于block的本质,你懂了吗?
  3. 北京、武汉马拉松刷新记录!特步又一次超过了“阿迪耐克”
  4. PageHelper使用注意
  5. 文件夹右键排列图标里没修改时间
  6. 云服务器centos8搭建网站 apache+php+mysql
  7. 如何绘制漂亮的深度学习模型图
  8. 查找算法【二叉查找树】 - 二叉查找树的查找
  9. Java编程思想(第4版)习题答案
  10. vue父子组件传值的一些坑(深浅拷贝)