当前位置: 首页 > 知识库问答 >
问题:

python DrissionPage模块,启动浏览器的时候报403错误?

章远航
2024-02-24
from DrissionPage import ChromiumPagepage=ChromiumPage()

WebSocketBadStatusException Traceback (most recent call last)
Input In [28], in <cell line: 1>()
----> 1 page=ChromiumPage()

File ~\anaconda3\lib\site-packages\DrissionPage\_pages\chromium_page.py:33, in ChromiumPage.__init__(self, addr_or_opts, tab_id, timeout, addr_driver_opts)

 31 self._page = self 32 address = self._handle_options(addr_or_opts)

---> 33 self._run_browser()

 34 super().__init__(address, tab_id) 35 self.set.timeouts(base=timeout)

File ~\anaconda3\lib\site-packages\DrissionPage\_pages\chromium_page.py:73, in ChromiumPage._run_browser(self)

 70     raise BrowserConnectError('\n浏览器连接失败,请检查是否启用全局代理。如是,须设置不代理127.0.0.1地址。') 72 ws = ws.json()['webSocketDebuggerUrl'].split('/')[-1]

---> 73 self._browser = Browser(self._chromium_options.address, ws, self)

 75 if (is_exist and self._chromium_options._headless is False and 76         'headless' in self._browser.run_cdp('Browser.getVersion')['userAgent'].lower()): 77     self._browser.quit(3)

File ~\anaconda3\lib\site-packages\DrissionPage\_base\browser.py:41, in Browser.__init__(self, address, browser_id, page)

 39 self.page = page 40 self.address = address

---> 41 self._driver = BrowserDriver(browser_id, 'browser', address, self)

 42 self.id = browser_id 43 self._frames = {}

File ~\anaconda3\lib\site-packages\DrissionPage\_base\chromium_driver.py:233, in BrowserDriver.__init__(self, tab_id, tab_type, address, browser)

231 self._created = True232 BrowserDriver.BROWSERS[tab_id] = self

--> 233 super().__init__(tab_id, tab_type, address)

234 self.browser = browser

File ~\anaconda3\lib\site-packages\DrissionPage\_base\chromium_driver.py:44, in ChromiumDriver.__init__(self, tab_id, tab_type, address)

 41 self.method_results = {} 42 self.event_queue = Queue()

---> 44 self.start()

File ~\anaconda3\lib\site-packages\DrissionPage\_base\chromium_driver.py:173, in ChromiumDriver.start(self)

171 """启动连接"""172 self._stopped.clear()

--> 173 self._ws = create_connection(self._websocket_url, enable_multithread=True,

174                              suppress_origin=True)175 self._recv_th.start()176 self._handle_event_th.start()

File ~\anaconda3\lib\site-packages\websocket\_core.py:494, in create_connection(url, timeout, class_, **options)

489 websock = class_(sockopt=sockopt, sslopt=sslopt,490                  fire_cont_frame=fire_cont_frame,491                  enable_multithread=enable_multithread,492                  skip_utf8_validation=skip_utf8_validation, **options)493 websock.settimeout(timeout if timeout is not None else getdefaulttimeout())

--> 494 websock.connect(url, **options)

495 return websock

File ~\anaconda3\lib\site-packages\websocket\_core.py:220, in WebSocket.connect(self, url, **options)

216 self.sock, addrs = connect(url, self.sock_opt, proxy_info(**options),217                            options.pop('socket', None))219 try:

--> 220 self.handshake_response = handshake(self.sock, addrs, *options)

221     self.connected = True222 except:

File ~\anaconda3\lib\site-packages\websocket\_handshake.py:69, in handshake(sock, hostname, port, resource, **options)

 66 send(sock, header_str) 67 dump("request header", header_str)

---> 69 status, resp = _get_resp_headers(sock)

 70 success, subproto = _validate(resp, key, options.get("subprotocols")) 71 if not success:

File ~\anaconda3\lib\site-packages\websocket\_handshake.py:135, in _get_resp_headers(sock, success_status)

133 status, resp_headers, status_message = read_headers(sock)134 if status != success_status:

--> 135 raise WebSocketBadStatusException("Handshake status %d %s", status, status_message)

136 return status, resp_headers

WebSocketBadStatusException: Handshake status 403 Forbidden

共有1个答案

陆畅
2024-02-24

这个问题看起来是在使用DrissionPage模块时,浏览器启动时遇到了403错误。这通常是由于服务器拒绝处理你的请求,可能是由于权限问题或身份验证失败。

403错误是HTTP协议中的一个状态码,表示服务器理解了客户端的请求,但是拒绝执行此请求。

解决这个问题的方法可能有以下几种:

  1. 检查你的网络连接:确保你的网络连接是正常的,没有任何防火墙或者代理服务器阻止你的请求。
  2. 检查你的请求头:如果你在向服务器发送请求时附带了请求头,那么可能存在一些问题。尝试不发送请求头,或者检查你的请求头是否正确。
  3. 检查服务器的配置:如果你有权访问服务器,那么检查服务器的配置,看看是否有什么设置阻止了你的请求。例如,检查服务器的防火墙设置、.htaccess文件等。
  4. 检查你的身份验证信息:如果你在请求时需要身份验证,那么确保你的身份验证信息是正确的。这包括用户名、密码、API密钥等。
  5. 最后,你可能需要联系服务器的管理员或者提供商,看看他们是否了解这个问题。他们可能能提供更详细的错误信息,或者修复阻止你的请求的问题。
 类似资料:
  • 问题内容: 您能帮我下一个吗?我发现了问题,无法解决。当我使用下一个代码时,浏览器已经启动并且测试通过了: 但是与类和方法相同的消息返回消息:“进程以退出代码0结束”: 如何使用第二种情况(带有方法和类)打开浏览器? 非常感谢您的帮助。 问题答案: 在使用 Selenium 处理Python的 unittest 模块时,您必须考虑以下几个事实: __ 当您传递 密钥时 ,请通过单引号和原始开关提供

  • 问题内容: 我刚接触selenium。我生成了我的第一个Javaselenium测试用例,它已成功编译。但是当我运行该测试时,我得到了以下RuntimeException 请告诉我如何解决此错误。 这是我要运行的Java文件。 我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行了上述java文件。 第二个问题:我可以右键单击包含selenium的网页上的指定位置。 问题

  • IE、Firefox、Safari、Chrome 和Opera 等主流浏览器,都具有某种向用户报告JavaScript 错误的机制。默认情况下,所有浏览器都会隐藏此类信息,毕竟除了开发人员之外,很少有人关心这些内容。 因此,在基于浏览器编写JavaScript 脚本时,别忘了启用浏览器的JavaScript 报告功能,以便及时收到错误通知。 17.1.1 IE IE 是唯一一个在浏览器的界面窗体(

  • 我使用的是Selenium 2.53.0Java、Tor 6.0.4和Firefox43。我用Firefoxprofile()加载profile.default归档文件,并用firefox.exe加载Firefoxbinary()来执行tor。Tor启动,但它没有启动,它显示两个错误:无法连接到Tor控制端口和Tor启动失败。

  • vite 项目启动时打开chrome 浏览器, 报错,怎么改呢? .env

  • 问题内容: 我有一种情况,我想从客户端将数据导出到CSV。我将拥有一个文本框/区域,或用户可以在其中输入数据的任何区域,然后理想情况下,只需单击一下,便会使用该数据更新本地CSV文件。 使用NodeJS与服务器交互及其核心模块(特别是模块)可以轻松实现这一点,但是显然浏览器并没有那么多。 我发现某些节点模块(例如)支持RequireJS的使特定模块在浏览器中工作的方法。因此,对于下划线,我这样做: