ChatGPT自动化

目录

一、前言

 二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

 2.2、禁用 Blink 渲染引擎

2.3、Cookies 和 UA伪装

 2.4、控制已打开的浏览器

三、自动化操作

3.1、问题遍历

3.2、获取回答

四、源码


一、前言

近日, ChatGPT在圈内大火。那么什么是ChatGPT呢?

ChatGPT是一种自然语言生成模型,由OpenAI开发。它基于GPT(Generative Pre-training Transformer)的技术架构,旨在更好地模拟人类的自然语言表达方式。

与GPT相比,ChatGPT具有更强的上下文感知能力,可以在继续对话的基础上生成文本。它的应用包括聊天机器人、对话系统、智能邮件助手等。

ChatGPT通过对大量的自然语言文本进行预训练,然后使用这些预训练权重来解决具体的任务。这种基于预训练的方法可以在计算资源有限的情况下获得很好的效果。

值得注意的是,ChatGPT仅是一种技术,并不能独立于特定的应用场景或者产品中使用。开发人员需要根据自己的需求设计应用程序,并使用ChatGPT来实现自然语言生成功能。


 二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

当我们在使用webdriver时,浏览器上方总会出现 “正在受到自动软件控制” 字样

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
# 隐藏 正在受到自动软件的控制 这几个字
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

 2.2、禁用 Blink 渲染引擎

"--disable-blink-features" 是一个命令行标志,可以传递给 Chrome 浏览器以禁用 Blink 渲染引擎的某些功能。Blink 渲染引擎被 Chrome 和其他基于 Chromium 的浏览器用来显示网页内容。

"--disable-blink-features" 标志接受一个由逗号分隔的要禁用的功能列表。可以使用此标志禁用的一些功能示例包括:

"AutomationControlled":禁用仅在 Chrome 由自动化控制时启用的功能(例如,在无头模式下运行或在 Selenium 控制下运行)。
"PreciseMemoryInfo":禁用准确测量内存使用情况的能力。
"PreciseTimeInfo":禁用准确测量时间的能力。

opt = webdriver.ChromeOptions()
# opt.add_argument("--incognito")
# opt.add_experimental_option('excludeSwitches', ['enable-automation'])
# opt.add_experimental_option('useAutomationExtension', False)
opt.add_argument("--disable-blink-features")
opt.add_argument("--disable-blink-features=AutomationControlled")

2.3、Cookies 和 UA伪装

 这个很简单,爬虫基本都会用到两者,通过添加Cookies可以让你的程序省去登陆步骤

cookies = {'domain': ".chat.openai.com",'name': '__Secure-next-auth.session-token','value': 'xxx','expires': 'Sat, 23-Dec-23 04:23:54 GMT','path': '/','HttpOnly': True,# 'HostOnly': True,'Secure': True,'SameSite': None
}
driver.get('https://chat.openai.com/chat')
driver.add_cookie(cookie_dict=cookies)

 2.4、控制已打开的浏览器

当使用一个新的web驱动器时会遇到很多问题,不如直接去控制一个已经打开的浏览器,就不用去设置那么多繁琐的参数。

首先,在你的谷歌输入如下网址

chrome://version/

 

 找到可执行文件路径,就是你的驱动器安装地址,在CMD中输入

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

 此时,你的谷歌就会打开一个新的窗口,下面在程序中输入


from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)

 这样你就可以直接控制一个已打开的浏览器了。


三、自动化操作

3.1、问题遍历

观察网页结构,不难发现,类似于大多数网站输入,通过Key实现。这时我们可以想到用Selenium来实现

 由此可以得到核心代码

question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')

 进入对话框,同样观察网页结构,进行Xpath定位,可以得到如下的核心代码。其中,我们可以把要遍历的问题通过csv存储。

question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i]

3.2、获取回答

当输入问题后,GPT就会进行回答,那如何判断是否回答完成并且可以进行下一个问题的提问呢

观察右下角,当GPT在回答问题时,右下角是省略号,表示在进行回答;在回答完毕时,右下角是发送箭头,如下所示

 可以通过检测是否存在该发送箭头来判断是否回答完毕

有如下核心代码

if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:

当然,有时回答问题时间过长,我们可能只获取了一部分消息,那如何去获取完整的信息呢

睡眠嘛 

回答一个问题大概时间是在一分钟多一点,我们可以让程序睡眠2个60s,来判断是否输出完成

四、源码

欢迎评论区技术交流哦~

# -*- coding = utf-8 -*-# "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
import time
import pandas as pd
import time
import os
from docx import Document
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)
# driver.implicitly_wait(10)
print("hello")
driver.get('https://chat.openai.com/chat')df = pd.read_csv('./问题合集.csv')
print(df['问题'][0])
print('等个5s')
print('Waiting........')
time.sleep(5)
question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')
botton = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()
print('再等个5s, 还没出来')
print('Waiting........')
time.sleep(5)
if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)
else:print('第三个15s')print('Waiting........')time.sleep(15)answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)print('Waiting........')
for i in range(0, 20):# 提问save_path = os.path.join(r"C:\Users\THUNDEROBOT\Desktop\百度文库", df['问题'][i] + ".docx")# 创建一个新的文档document = Document()question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i] + ' (详细描述并用中文回答,不要让我说继续,一口气说完)')# time.sleep(5)# 点击发送botton_new = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()# 主页面回答问题time.sleep(50)if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第一个30s内完成')print('Waiting........')else:time.sleep(60)answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第二个30s内完成')print('Next question')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT登陆iOS,开启智能交流新时代

随着ChatGPT3.5升级到4.0版本,国内公司也逐步推出自主研发的智能语言模型,使得国内人工智能AI领域的竞争日益白热化。 今天,小桌发现Opean AI正式发布了ChatGPT iOS版本,对于广大iOS系统的用户来说,这是历史性的时刻&…

用chatgpt做ppt

step1:告诉它指令:接下来你回复的所有内容都放到markdown代码框中 step2:然后告诉它需求,待回复后点击copy code step3 使用www.mindshow.fun网站,登陆账号之后点击导入

ChatGPT检测到可疑登陆行为求高手解惑

也是第一次遇到这种情况,不知道是账号被封还是梯子的问题,尝试换了梯子也是这样的问题,有没有大佬解释一下是什么原因???

ChatGPT对话记录中显示:Not seeing what you expected here? Don‘t worry, your conversation data is preserved

ChatGPT中对话记录消失的解决办法 如果你遇到了标题中所述的问题,请不要过于担心。 在此之前,用户登录ChatGPT后发现对话记录全部消失,没有任何提示,只有“New chat”按钮。OpenAI官方称是在维护升级(大概3.8日之前&a…

建议收藏,最全ChatGPT 中文调教指南:提供各个领域的角色提示词(prompts)及使用技巧,当然也有不正经指南

ChatGPT是一种基于GPT(Generative Pre-trained Transformer)模型的聊天机器人,能够回答用户提出的问题和进行对话。它是由OpenAI开发的人工智能产品,具有自然语言处理和深度学习技术。 ChatGPT在日常的对话中,表现的非…

一文读懂ChatGPT,满足你对chatGPT的好奇心

2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,…

【简单入门】ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

目录 思维导图一、资料二、 指南环境配置两个基本原则&#xff08;最重要!!!!&#xff09;原则一&#xff1a;编写清晰、具体的指令**策略一&#xff1a;使用分隔符清晰地表示输入的不同部分**&#xff0c;**分隔符可以是&#xff1a;&#xff0c;""&#xff0c;<…

Github的开源项目ChuanhuChatGPT和gpt-academic,专用于学术拓展ChatGPT

目录 1 前言2 Chuanhu ChatGPT的安装部署3 ChatGPT学术优化3.1 主要功能3.2 下载软件安装运行3.3 用docker运行3.4 自定义快捷键&#xff08;类似function&#xff09;3.5 配置代理 4 讨论 1 前言 专用于科研工作的拓展Tool&#xff0c;优化Paper润色、markdown、Tex公式双显示…

ChatGPT与科研:革新与隐患共存 |《自然》长文

本篇《自然》长文共5934字&#xff0c;预计阅读时间12分钟&#xff0c;建议可以留足阅读时间&#xff0c;也可以先“浮窗”或者收藏哦。 原文作者&#xff1a;Chris Stokel-Walker & Richard Van Noorden 科研人员对人工智能的最新进展既激动又担忧。 去年12月&#xff0c;…

ChatGPT角色扮演咒语库(内有插件推荐)

~~~~~~~ ChatGPT 的回复质量取决于提示词&#xff08;即 Prompt&#xff09;。这通常是用户提供的问题或文本&#xff0c;以激活模型生成回复。简单来说&#xff0c;prompt 就是用户想要询问的内容&#xff0c;作为输入送到 ChatGPT 中&#xff0c;ChatGPT 会尝试理解这个输入&…

中国版 ChatGPT :MOSS ,被网友挤崩了 !

- 正文 来源&#xff1a;机器之心 不知道这个人工智能&#xff0c;有没有获得完整的一生。 ChatGPT 是最先进的 AI&#xff0c;也是最热门的应用 —— 自去年 11 月底发布以来&#xff0c;它的月活跃用户两个月超过一亿&#xff0c;轻松拿到了全球互联网史上用户增长速度的第一…

文心一言(中国版ChatGPT)

百度十年&#xff0c;汇成一言 文心一言 文心一言&#xff08;英文名&#xff1a;ERNIE Bot&#xff09;是百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮…

【goframe】(1)API相关接口技术调研,使用新框架goframe非常简单就能实现chatgpt接口调用,同时封装对象结果返回并解析

目录 前言1&#xff0c;关于goframe2&#xff0c;使用goframe客户的方法3&#xff0c;总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 未经博主允许不得转载。 博主CSDN地址是&#xff1a;https://blog.csdn.net/freewebsys 博主掘…

冰橙GPT chatGPT开放接口使用说明【含连续对话功能和快捷指令接收】

1.请求地址&#xff1a;https://gpt.bcwhkj.cn/api/v2.Gptliu/search 2.请求方式: POST 3.body格式&#xff1a;json 4.请求内容&#xff08;sse 流式请求&#xff0c;输出效果较好&#xff0c;响应速度快&#xff09;&#xff08;非流式请求&#xff0c;可不加stream这…

通过AI工具(ChatGPT接口)生成一字未改的论文,查重率4.2%,可以直接当作论文使用

论文题目&#xff1a;基于AIOT技术的能源控制器的设计以及应用 查重结果&#xff1a;4.2% AI工具国内体验&#xff0c;关注&#xff1a;码视野&#xff0c;回复关键字&#xff1a;1002 一、引言 随着全球经济的快速发展和人口的增长&#xff0c;对能源的需求日益增加。然而&…

使用python调用chatGPT(openai)接口

首先需要安装openai模块 pip install openai其次需要去官网申请一个key 登陆点击右上角头像&#xff0c;选择View API keys&#xff0c;然后点击下图按钮创建key即可。 1、聊天接口调用代码 import os import openaiopenai.api_key "sk-oahsWxJYvJYb6iX 你的key&…

全网最详细中英文ChatGPT接口文档(四)30分钟快速入门ChatGPT——Models模型

30分钟开始使用ChatGPT——Models模型 ModelsOverview 概述GPT-4 Limited betaGPT-3.5Feature-specific models 特定功能的模型Finding the right model 寻找合适的模型DALLE BetaWhisper BetaEmbeddings 嵌入Codex Limited betaModeration 审核GPT-3Model endpoint compatibil…

全网最详细中英文ChatGPT接口文档(五)30分钟快速入门ChatGPT——手把手示例教程:如何建立一个人工智能回答关于您的网站问题,小白也可学

30分钟开始使用ChatGPT——Models模型 How to build an AI that can answer questions about your website 如何建立一个人工智能&#xff0c;回答有关您的网站的问题Getting started 入门Setting up a web crawler 设置Web爬网程序Learn how to build a web crawler 了解如何构…

ChatGPT源码基于OpenAI的GPT-3.5-Turbo接口开发分享

演示地址&#xff1a; 点此进入 主技术栈&#xff1a; 主后端&#xff1a;Node.JS 主前端&#xff1a;React 小程序&#xff1a;Taro或Uniapp APP&#xff1a;ReactNaitve或Uniapp UI&#xff1a;ChatGPT官方克隆 API接口&#xff1a;GPT-3.5-Turbo

chatgpt接口返回参数分析

接口请求使用二进制请求&#xff0c;数据流式返回&#xff0c;即分块&#xff08;分批次&#xff09;返回。 问题&#xff1a;一周有几天 请求头 参数详解 参数名称 说明 role 消息发送者的角色&#xff0c;这里为 "assistant"。 id 消息的唯一标识符。 pare…