巴纳拜·杰克 2024-03-27 03:11 采纳率: 100%
浏览 3
已结题

怎么通过一段url查找到网站主界面

http://8.217.145.134/?id=5a61f1a1-c633-4e7c-9a4d-42227db1765d
我是0基础小百,想找到这个网站登陆界面怎么找啊,大手们帮小老d一下啊

  • 写回答

2条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-03-27 03:11
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    首先,需要明确一下网站登陆界面是什么样子的,通常来说,登陆界面会有一个输入账号和输入密码的区域和一个登陆按钮,也可能会有忘记密码、注册等相关链接。在这个前提下,我们可以通过以下方式找到网站登陆界面:
    1. 直接在网址栏中输入网站域名,例如https://www.baidu.com,打开网站首页后,通常可以在网站的顶部或者底部找到“登陆”或者“登录”等相关链接,点击即可进入登陆界面。
    2. 在搜索引擎中搜索网站名称+登陆/登录,例如搜索“百度登陆”或“百度登录”,搜索引擎会返回相关的登陆页面链接,点击进入即可。
    3. 使用谷歌浏览器自带的“开发者工具”,进入网站首页后右键点击鼠标,选择“检查”,会打开一个浏览器侧边栏,在侧边栏中选择“网络(Network)”标签页,在这个标签页中会看到所有的网络请求,找到请求的URL中包含“login”或者“signin”的请求,这就是网站的登陆界面。 案例: 我们以知名的社交媒体网站Facebook为例,来演示如何找到网站的登陆界面。
    4. 直接在网址栏中输入网站域名www.facebook.com,打开网站首页后,在右上角可以找到“登陆”或者“Log In”等相关链接,点击进入登陆页面。
    5. 在搜索引擎中搜索“facebook登陆”或“facebook登录”,会返回相关的登陆页面链接,点击进入即可。
    6. 使用谷歌浏览器自带的“开发者工具”,进入网站首页后右键点击鼠标,选择“检查”,会打开一个浏览器侧边栏,在侧边栏中选择“网络(Network)”标签页,可以看到网站的所有网络请求,找到url包含“login”或“signin”的请求,点击进入即可找到登陆界面。 代码: 使用谷歌浏览器自带的“开发者工具”可以找到网站的登陆界面,具体的代码如下:
    //打开网站
      await page.goto('https://www.baidu.com/');
      //打开开发者工具
      await page.setViewport({ width: 1280, height: 800 });
      await page.evaluate(() => {
        return new Promise((resolve) => {
          window.setTimeout(() => {
            resolve(window.open('', '_blank', 'height=800,width=1280'));
          }, 0);
        });
      });
      //跳转到开发者工具页面
      let devtoolsTarget;
      await targetsChangedPromise;
      const targets = await browser.targets();
      for (const target of targets) {
        if (target.type() === 'page' && target.url().includes('devtools://')) {
          devtoolsTarget = target;
        }
      }
      await devtoolsTarget.activate();
      //在开发者工具页面打开控制台
      const tab = await devtoolsTarget.page();
      await tab.goto(devtoolsTarget.url().replace('devtools://', ''));
      const devtoolsSession = await devtoolsTarget.createCDPSession();
      const { sessionId } = devtoolsSession;
      //在控制台中输入命令,找到登陆界面url
      await devtoolsSession.send('Network.enable');
      const consoleMessages = [{
        "method": "Runtime.evaluate",
        "params": {
          "expression": `
        const addConsoleMessage = (text) => {
          const message = {
            "method": "Console.messageAdded",
            "params": {
              "message": {
                "text": text,
                "level": "log",
              },
            },
          };
          this.client.sendEncoded(message);
        };
        let urlFound = false;
        let url;
        this.client.on('Network.requestWillBeSent', ({requestId, request}) => {
          if (request.url.includes('login') || request.url.includes('signin')) {
            addConsoleMessage(\`Found url: \${request.url}\`);
            url = request.url;
            urlFound = true;
          }
        });
        const intervalId = setInterval(() => {
          if (urlFound) {
            clearInterval(intervalId);
            this.client.removeListener('Network.requestWillBeSent');
            resolve(url);
          }
        }, 100);
        `,
          "returnByValue": true,
        },
        "sessionId": sessionId,
      }];
      await devtoolsSession.send('Runtime.enable');
      await Promise.all(consoleMessages.map((message) => {
        return new Promise((resolve, reject) => {
          devtoolsSession.once('Runtime.consoleAPICalled', (msg) => {
            if (msg.args && msg.args[0].value === 'Found url: ') {
              return;
            }
            if (msg.args) {
              resolve(msg.args[0].value);
            } else {
              reject('Could not get value');
            }
          });
          devtoolsSession.send(message);
        });
      }));
      //输出找到的登陆界面url
      const url = consoleMessages[0];
      console.log(`找到的登陆界面url是${url}`);
    

    需要注意的是,在使用谷歌浏览器自带的“开发者工具”时,需要在puppeteer中开启开发者工具,并且需要一些基本的前置条件,例如需要加载页面,需要等待目标加载完成等。此外,如果想获取更多的页面信息,还需要寻找相应的开发者工具API,并且按照相应的格式输入命令,才能够获取到需要的信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: