首页
学习
活动
专区
圈层
工具
发布

短时间锁定爬取异常的处理思路

尤其是面对带有延迟加载、地域限制和请求校验的网站时,异常可能来自多种环节:连接问题:代理地址失效、网络延迟过高请求问题:关键请求头缺失、会话信息过期内容问题:页面结构变化、数据在脚本中动态生成访问限制:...情境回顾一次酒店信息采集任务中,需要基于 城市、酒店名、景点 这些关键词,在 www.agoda.cn 检索相关酒店并获取价格、评分等内容。...直连数据接口:绕过 HTML 页面,直接请求 Agoda 的酒店搜索 API(抓包获取)。访问节奏控制:在多次请求之间增加随机延时,避免短时间内大量访问。5..../",}# ======== 搜索关键词 ========keyword = "上海" encoded_keyword = quote(keyword)# Agoda 酒店搜索 API(抓包获取,可修改参数...)url = f"https://www.agoda.cn/api/zh-cn/Main/GetSearchResultList?

9010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    API 架构风格抉择:SOAP、REST、GraphQL 和 RPC 的特性、优势与局限

    RPC使用 GET 方式获取信息,其余操作则使用 POST 方式。服务器和客户端之间的交互机制归结为调用端点并获取响应。 易于添加功能。...在 RPC 中,无法自检 API 或发送请求,也无法根据请求了解要调用的函数。 函数爆炸。创建新函数太容易了。因此,我们不是编辑现有函数,而是创建新函数,结果却得到了一大堆难以理解的重叠函数。...过度获取和不足获取问题。REST响应包含的数据过多或过少,通常需要发起另一个请求。 REST 用例 管理 API。这类 API 专注于管理系统中的对象,面向众多用户,是最常见的 API 类型。...GraphQL 中的查询执行 除了 RESTful CRUD 操作之外,GraphQL 还具有允许从服务器获取实时通知的订阅功能。 GraphQL 的优点 类型化架构。...GraphQL 在数据获取方面取得了很大的进步,但并不是每个人都有足够的时间和精力去掌握它。 归根结底,尝试一些特定风格的小用例是有意义的,看看它是否适合你的用例并能解决你的问题。

    59810

    安息吧 REST API,GraphQL 长存

    该模式大致表示了 GraphQL 层可以响应的范围。 还不够清楚?我们可以说 GraphQL 其实根本就是:REST API 的接替者。所以让我回答一下你最有可能问的问题。...REST API 有什么问题? REST API 最大的问题是其多端点的本质。这要求客户端进行多次往返以获取数据。 REST API 通常是端点的集合,其中每个端点代表一个资源。...因此,当客户端需要获取多个资源的数据时,需要对 REST API 进行多次往返,以将其所需的数据放在一起。 在 REST API 中,没有客户端请求语言。客户端无法控制服务器返回的数据。...例如,READ REST API 端点可能是 GET /ResouceName - 从该资源获取所有记录的列表; GET /ResourceName/ResourceID - 获取该 ID 标识的单条记录...上面提到的 REST API 的问题正是 GraphQL 试图要解决的问题。它们当然不是 REST API 的所有问题,我也不想讨论 REST API 是什么。

    3.1K30

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    RPC的优点 直接简单的交互方式:RPC使用GET获取信息,并使用POST处理其他功能。服务端和客户端的交互归结为对后端的调用,并获取响应结果。...可发现性低:RPC无法对API进行自省或无法通过发送的RPC请求来理解其调用的功能。...如何对资源进行建模,以及对哪些资源建模取决于具体场景,这使得REST在理论上是简单的,但实践上是困难的。 载荷较大:REST会返回大量元数据,因此客户端可以从响应的信息中了解到应用的状态。...过度获取和不足获取问题:由于有时候会出现包含的数据过多或过少的情况,导致在接收到REST的响应之后,通常还会需要另一个请求。...在获取数据方面,GraphQL迈出了一大步,但并不是所有人都有足够的时间和精力来处理这种模式。 归根结底,最好在一些小场景下尝试每种API风格,然后看是否满足需求,是否能够解决问题。

    3.4K11

    GraphQL是API的未来,但它并非银弹

    1 REST 的缺点 作者指出了 REST API 的一系列缺点,以及 GraphQL 如何克服所有这些缺点: 过度获取; 多个请求请求多项资源; 针对嵌套数据的瀑布式网络请求; 每个客户端都需要知道每个服务的位置...因为这个原因,你在版本控制方面不会有任何问题。 我无法认同这个结论,不能仅仅因为 GraphQL 模式不支持本地版本控制就说问题消失了。如果不为 REST API 设置版本,也会取得同样的效果。...使用 REST,你可以创建一个新端点或现有端点的另一个版本。问题是一样的,只是解决方案看起来有一点不同。 需要说明的是,如果你无法控制客户端,确实就需要某种版本控制。...GraphQL 无法描述身份验证、授权和输入验证。GraphQL 没有这些特性,因为来自 Facebook 的发明者从另一个层面解决了这个问题。他们不需要向 GraphQL 添加这些特性。...客户端需要有额外的逻辑对部分响应做相应的处理。 使用 REST,获取部分数据的逻辑位于客户端或 BFF 中。无论哪种方式,其逻辑都或多或少与 GraphQL 相同,只是位置不同。

    2.3K10

    为什么要使用 GraphQL?【Programming】

    如果来自RESTAPI端点的成功响应返回35个字段,则客户端应用程序将接收35个字段 提取问题 传统上,REST API无法为客户端应用程序提供唯一的方法来仅检索或更新他们关心的数据。...通常将其描述为“过度获取”问题。随着移动应用在人们的日常生活中的普遍使用,过度获取问题产生了现实世界的不良影响。...由于过度获取和过度获取问题及其对客户机应用程序性能的影响,一种有助于高效获取的API技术有可能在市场上引起轰动——而GraphQL大胆地跳入并填补了这一空白。...REST的响应 REST API设计人员不愿无休止地失败,他们尝试通过以下几种方式来解决移动应用程序性能问题: “include”和“exclude”查询参数,允许客户端应用程序通过潜在的长查询格式指定他们想要的字段...一些示例包括: 围绕REST API的缓存机制更加成熟。 用于使用REST构建API的模式已经非常完善。

    1.3K00

    Django Rest Framewor

    什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络...,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是...域名 https://api.example.com                         尽量将API部署在专用域名(会存在跨域问题) https://example.org/api/                       ...://api.example.com/v1/employees method GET      :从服务器取出资源(一项或多项) POST    :在服务器新建一个资源 PUT      :在服务器更新资源...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

    1.6K20

    理解GET和POST区别的全面指南

    REST API原理与API通信要理解GET和POST的作用,首先需要理解REST API的原理及其如何操作。REST(表现层状态转移)是一种设计风格,用于通过HTTP方法管理和操作资源。...在理解了REST API的基础之后,让我们来定义GET和POST:GETGET是一种HTTP方法,用于从指定的服务器请求数据。通过使用GET方法,客户端可以基于请求中发送的参数检索信息。...让我们通过以下各方面的比较,详细分析这些区别:属性GETPOST目的获取资源创建、更新或删除资源数据存储方式存储在查询字符串中存储在请求体中URL长度限制有限制没有限制浏览器历史记录记录在URL中不记录缓存可缓存不可缓存安全性安全性较差安全性较好书签可以添加书签无法添加书签使用场景...- 获取网页- 发送搜索查询- 应用过滤器- 提交表单数据- 上传文件- 更新数据库如上表所示,HTTP GET和POST可以从多个角度进行讨论,如它们的目的、数据传输方式等。...目的上的区别GET:用于从服务器获取数据。POST:用于向服务器发送数据。数据传输方式的区别GET:将请求参数作为查询字符串附加到URL中。POST:将数据包含在请求体中发送。

    32910

    挖洞经验 | 开放重定向漏洞导致的账户劫持

    从...../到开放重定向说起 经过对目标网站https://target.com的测试之后,我发现了其中存在一个开放重定向问题,如果我们在请求GET /api/..前添加两个/号,就会得到以下响应: HTTP 1.1...GraphQL是一种API数据查询语言,很多大公司都用GraphQL API代替了 REST API。...目标网站使用REST和GraphQL方式来获取、更改和删除用户数据,而GraphQL有点类似REST API的代理,其可以向服务端不同的REST端点发起ssrf请求,以获取或更改相关数据,就比如以下GraphQL...以下是最终响应: 无法读取请求响应,原因在于服务端希望请求是JSON形式的。但尽管如此,我还是可以利用该方式探测到目标的内部网络架构,但最终漏洞危害也会仅限于中危而已。

    2K20

    4种主流的API架构风格对比

    RPC 使用 GET 来获取信息,使用 POST 来处理其他所有操作。服务端和客户端之间交互的机制归结为调用端点并获得响应。 易于添加新函数。...在 RPC 中,无法对 API 进行检验总结,或者发送请求来开始理解根据需求应该调用哪个函数。 函数爆炸性增长。创建新函数非常容易。...响应过度和响应不足问题。REST 的响应包含的数据会过多或不足,通常会导致客户端需要发送另一个请求。 4 REST 的用例 管理 API。...(如何从 GraphQL 端点仅获取所需要的数据,图源:Mohit Tikoo) 如今,GraphQL 的生态系统正在蓬勃发展,出现了例如 Apollo、GraphiQL 和 GraphQL Explorer...REST 是针对 API 的最高级别的抽象和最佳模型。但它往往会有些“啰嗦”而增加系统的负担 —— 如果你使用的是移动设备,这是个问题。

    2.7K30

    4种主流的API架构风格对比

    RPC 使用 GET 来获取信息,使用 POST 来处理其他所有操作。服务端和客户端之间交互的机制归结为调用端点并获得响应。 易于添加新函数。...在 RPC 中,无法对 API 进行检验总结,或者发送请求来开始理解根据需求应该调用哪个函数。 函数爆炸性增长。创建新函数非常容易。...响应过度和响应不足问题。REST 的响应包含的数据会过多或不足,通常会导致客户端需要发送另一个请求。 REST 的用例 管理 API。...如何从 GraphQL 端点仅获取所需要的数据,图源:Mohit Tikoo 如今,GraphQL 的生态系统正在蓬勃发展,出现了例如 Apollo、GraphiQL 和 GraphQL Explorer...REST 是针对 API 的最高级别的抽象和最佳模型。但它往往会有些“啰嗦”而增加系统的负担 —— 如果你使用的是移动设备,这是个问题。

    2.7K20

    如何使用SpringMvc处理Rest异常

    不过,由于rest并不包含用户界面(rest更倾向于用纯文本表达),而springmvc则老是想着“生成用户界面、生成用户界面”,所以,想要用springmvc来更restful地表述错误或问题,并没有那么容易...大多数rest API设计者认为,尽可能地重用HTTP规范定义的状态码是最好的,因为许许多多的http客户端都能理解这些错误情况的绝大多数,并且,“重用”这件事鼓励行为的一致性,这对开发有好处。...再看方案,其实并不能解决问题。复制一个状态码放在响应体里不是不可以,但是“让客户端不需要去响应头里看状态码”是无法达成的。...服务端无法保证这些节点发生错误也会遵照作者上述的做法,所以客户端就无论如何都得考虑处理这些情况,而处理这些情况就必须从响应头里获取状态码。...而既然都已经通过响应头获取状态码了,又何必再去响应体里获取一遍?多此一举。 我认为在使用http客户端时,处理响应的流程如下:  要捕获住所使用的http客户端组件声明的所有异常。

    1.5K00

    REST,以及RESTful的讲解

    所以你能理解到的程度,更多的就是在于你要弄清楚你要解决的什么问题,如果你的问题只是理解Rest,恐怕你很理解,如果你的问题是怎么解决Url混乱的问题,你反而很快能弄懂了~ 对比 https://localhost...:8080/myweb/getDogs --> GET /rest/api/dogs 获取所有小狗狗 https://localhost:8080/myweb/addDogs --> POST...例子2 1、获取文章 请求: GET /blog/post/{postId} HTTP/1.1 响应: HTTP/1.1 200 OK { "title": "foobar",...比如:左边是错误的设计,而右边是正确的 GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗 GET /rest/api/addDogs...如查询员工的工资,如果查询工资是需要登录系统,进入查询工资的页面,执行相关操作后,获取工资的多少,则这种情况是有状态的,因为查询工资的每一步操作都依赖于前一步操作,只要前置操作不成功,后续操作就无法执行

    81230

    REST在许多API使用场景中仍然优于GraphQL

    即使在 2024 年,GraphQL 仍然存在一些基本问题。 译自 REST Still Outshines GraphQL for Many API Use Cases,作者 Gil Feig。...也就是说,它可以帮助您获取所需的确切数据并从单个请求访问多个资源,从而节省您的时间、金钱和带宽。 但是,当您 开始使用 GraphQL 时,您会发现它会产生一整套新的问题,这些问题会压倒其优势。...我将分解这些问题,以便您更好地决定 GraphQL 是否值得在您的集成中使用。我还将重点介绍为什么 REST 今天是更好的选择,并将继续成为领先的 API 标准。...这些代码——包括从 404(未找到)到 500(内部服务器错误)的所有内容——使诊断问题和构建自动解决问题的错误处理流程变得容易。...由于这些响应不像 REST 中那样标准化,因此它们更难计划和自动处理。 许多工程师都有构建和/或维护 REST API 集成的经验。 各种规模的公司主要使用 REST API。

    63410

    ASP.NET CORE Study08

    因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。...过期缓存工作时, 第一次请求进入时会先经过缓存,但此时缓存内是空的,所以请求会进入到API,API会返回响应到缓存内,同时响应头内会包括 Cache-Control 响应头,指明缓存的存活时间和缓存类型等...,缓存会将响应复制一份存在缓存中,并且返回响应,之后进入的请求只要在新鲜期内都不会进入到API内,而是由缓存直接返回响应。...并发控制 并发问题,可以是指 两个客户端,1和2,客户1先获取了某一个资源,随后客户2也获取了该资源,并且客户2进行了更新操作并且推送到服务器端,而此时客户1也对该资源进行更新操作,那么客户1的更改就会把客户...悲观并发控制 就是资源为前一个客户锁定,只要资源处于锁定状态,别人就不能修改它,只有客户1可以修改,但这REST下无法实现,因为REST有无状态约束。

    16110

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    但是,我也曾遇到过一些让 REST 蒙羞的 API 例子,错误使用 HTTP 状态码、纯文本响应、不一致的模式、插入端点中动词......尽管如此,你可能还在想:“但我按照您推荐的方式,在响应体中发送了错误详细信息,那么问题出在哪里呢?” 让我给你讲个故事吧。...分页允许用户逐步获取数据集。最简单类型的分页就是按页码进行分页,它由page和page size确定。现在问题来了:如何将这样的功能融入REST API?...使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?大多数时候,您希望建立一个快速的API,以便一些服务可以相互交互。...这种方法的问题在于,通常情况下,框架并不是针对构建REST API服务器而设计的。例如,Flask和Express都是两个非常灵活的框架,但它们并没有专门为帮助您构建REST API而制定。

    1.4K40

    使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API

    通过表述来对资源进行操纵:REST的组件对资源的操作(CRUD)是通过首先获取该资源现有的表述或者目标表述,然后在组件之间完成从现有表述到目标表述的转换。...例如,我从服务器获取到了Company的资源响应(包括元数据)之后,凭借这些信息客户端就应该可以成功的删除或修改这个Company的资源数据了。但这又是怎么实现的呢?...如果服务器上的Company API支持对Company进行删除或者修改,那么在我们获取(GET)到这个Company资源的响应后,响应里面应该包含着删除或者修改这个Company资源的URI,通过这些...从哪能获取这个资源?最终,它还允许自包含文档的API。 多层系统:REST的解决方案适用于多层架构,这些层可以被修改,可以被添加或删除,可以是物理的,也可以是逻辑的。...这也说明客户端无法得知它连接的是架构最终层还是连接到了某个中间层。

    71110

    【API架构】REST API 行业辩论:OData vs GraphQL vs ORDS

    API 版本控制和维护 一个令人头疼的问题是在 API 更改时处理应用程序的更新,同时还要维护旧版本。导致 REST API 令人头疼的最大问题是,当您查询端点时会返回所有字段。...API 开发人员无法了解客户是否依赖特定领域的信息。客户端开发人员必须处理所有返回的字段,即使他们不需要这些信息。...GraphQL 通过强制客户端准确指定他们需要哪些字段来解决 API 版本控制和维护问题。API 开发人员可以主动联系已知的字段使用者,以迁移已弃用的字段。响应包括有关哪些字段已弃用的信息。...对于习惯于处理 Web 服务的人来说,GraphQL 也可能有点尴尬,因为为了查询数据,您不需要执行 GET 操作,这就是您从普通 REST Web 服务获取结果的方式。...您执行 POST,准确定义要包含在响应中的字段和函数。 因此,尽管 GraphQL 使您能够从元数据中确定哪些字段和函数可用,但您仍然不知道它们在语义上的含义。

    2.6K30
    领券