首页 > 其他分享 >Selenium + Titanium代理获取请求的接口数据

Selenium + Titanium代理获取请求的接口数据

时间:2024-09-29 09:24:10浏览次数:8  
标签:chromeOptions Selenium 接口 Titanium proxyServer new div id

有一个采集数据的需求,分析了页面数据后发现列表有一个id,但是没有其他数据,打开详情并不是通过id,而是其他一个字段,这就说明通过selenium抓取页面数据还不行,还要接口返回的数据。这个时候就需要用到代理了,在代理层面把数据拦截下来,把自己想要的接口数据保存起来,然后通过页面找到的id去匹配找到详情需要的字段。大致意思就是接口列表返回的数据有id也有详情的字段,但是html里面只有id,所以要把接口数据也存起来,然后根据id找到列表对应的详情字段。
代码如下:

static async Task Main(string[] args)
{
    var proxyServer = new ProxyServer();
    proxyServer.AddEndPoint(new ExplicitProxyEndPoint(System.Net.IPAddress.Any, 8000, true)); // 8000为端口
    proxyServer.Start();

    var proxy = new Proxy
    {
        HttpProxy = "127.0.0.1:8000",
        SslProxy = "127.0.0.1:8000"
    };

    var chromeOptions = new ChromeOptions();
    chromeOptions.Proxy = proxy;
    chromeOptions.AddArgument("--headless"); // 启用无头模式
    chromeOptions.AddArgument("--no-sandbox"); // 可选,适用于某些环境
    chromeOptions.AddArgument("--disable-dev-shm-usage"); // 可选,适用于某些环
    using (var driver = new ChromeDriver( chromeOptions))
    {
        //proxyServer.BeforeRequest+=//返送前的请求request也会在这里拦截
        proxyServer.BeforeResponse += async (sender, e) =>//返回的请求都会在这里拦截
        {
            // 检查响应的 Content-Type
            if (e.HttpClient.Request.Url.Contains("/xxxx") && e.HttpClient.Request.Method == "POST")
            {

                Rootobject rootobject = JsonSerializer.Deserialize<Rootobject>(await e.GetResponseBodyAsString());
                if (rootobject.data.List != null)
                { 
                    foreach (var item in rootobject.data.List)
                    {   
                        Console.WriteLine($"tid:{item.tid}"); 
                    }
                }
            }
        };

        driver.Navigate().GoToUrl("https://domain.com");
        Thread.Sleep(1000);
        driver.FindElement(By.XPath("/html/body/div/div/div/section/div[3]/div[2]/div/div[1]/img")).Click();
    } 
    proxyServer.Stop();
    Console.ReadKey();
}

其实也可以直接请求接口,但是直接请求接口的话参数要搞清楚怎么传,这里选择了selenium主要是为了方便,不需要去研究请求参数也不用担心参数变动。selenium本身是支持代理请求的,我们只需要启动一个代理服务器,把代理服务器的地址给到selenium就可以了,这篇文章的代码逻辑也是如此。

标签:chromeOptions,Selenium,接口,Titanium,proxyServer,new,div,id
From: https://www.cnblogs.com/dx5800/p/18430966

相关文章

  • 【漏洞复现】孚盟云oa AjaxSendDingdingMessage接口 存在sql注入漏洞
    》》》产品描述《《《        孚盟与阿里强强联手将最受青睐的经典C系列产品打造成全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,使中小企业在网络硬件环境、......
  • 业务系统——钉钉调用接口上传文件报错:Could not find token at index 0
    参考:https://open.dingtalk.com/document/orgapp/initiate-approval使用的是旧版的SDK///<summary>///获取审批钉盘信息///</summary>///<paramname="userId"></param>///<paramname="to......
  • 【C++】string中常用的接口
    目录前言常用接口1.有/无参string2.字符串相加3.string类对象的访问及遍历操作3.1普通遍历3.2迭代器遍历3.3范围for4.string类对象的修改操作前言今天分享一些个人认为string常用的接口,大多数资料来自于cplusplus,其他不常用的平常查阅资料使用即可。需要测试代......
  • TS系列(4):常用类型之类、抽象类和接口
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。TS系列(1):TS是什么?如何使用?TS系列(2):类型声明、类型推断和类型总览TS系列(3):常用类型(详细)话接上回,今天分享下类、属性修饰符、抽象类和interface(接口)10.复习类相关知识本小结复习类相关知识,如果有相关基础可以跳过。classPerson{......
  • 鸿蒙(HarmonyOS)实战开发篇——基于Napi调用ArkTS/系统接口
    场景描述:app应用在native侧调用系统库/arkts模块的方法。应用经常会遇到如下的业务诉求:场景一:系统提供了ArkTS接口,但未提供对应的NDK接口,当伙伴使用C++代码实现业务逻辑时,部分系统能力需要依赖系统ArkTS接口;场景二:系统仅提供了ArkTS异步接口,未提供对应的NDK接口,当......
  • API接口对接全攻略:从入门到精通
    在数字化时代,API(应用程序接口)已经成为了不同软件系统间信息交互的桥梁。对于开发者而言,掌握API接口的对接技术,无疑是通往更高效、更智能的软件开发之路的钥匙。本文将为大家提供从入门到精通的API接口对接全攻略,助力您在API的世界里游刃有余。​​​​​​一、入门篇:初识API接口......
  • API 接口是什么?怎么对接 API?
    API接口解释API接口(ApplicationProgrammingInterface,应用程序编程接口)是一组预定义的方法和协议,用于与某个软件组件或系统进行交互。API定义了软件组件之间的通信方式,允许不同的应用程序之间进行数据交换和功能调用。简而言之,API接口是一种接口标准,通过它,软件系统允许其他软......
  • API接口系列:各大电商平台商品详情数据接口汇总
    各大电商平台的商品详情数据接口(API接口系列)是开发者在构建电商应用或进行数据分析时的重要工具。这些接口允许开发者通过编程方式获取商品的详细信息,如商品ID、标题、价格、库存、属性、描述、图片等。以下是对淘宝、京东、拼多多等电商平台商品详情数据接口的汇总,以及开发者......
  • 抖音商品详情API接口:轻松获取商品信息的宝典
    要快速获取抖音上的商品详情?我们的抖音商品详情API接口正是您的得力助手!这个API接口让您能够轻松访问并获取抖音商品的全面信息,是提升业务效率和优化用户体验的绝佳工具。为何选择我们的API接口?重要性凸显:在快节奏的电商环境中,及时、准确地获取商品信息至关重要。我们的API接......
  • APP集成人脸识别接口-C#人脸识别API接口
    人脸识别技术是一种基于生物特征的识别技术,它通过捕捉和分析人脸特征来识别或验证个体身份。这项技术主要依赖于计算机视觉、图像处理和人工智能算法的结合,一般由第三方人工智能接口平台来提供,例如:翔云、阿里云等平台。人脸识别技术的应用可以大大提升身份验证的准确性,减......