高级HTTP POST保护?

Jam*_*ery 13 c# automation bots http

在一个我无法理解的问题上,我被困在这里大约24小时.

我工作的保险公司依赖于从多个网站请求报价数据,一些用于分析,一些用于向客户报价.我正在为我开发的软件创建一个类,以便为我们当前的提供商添加新的保险提供商.

我基本上发送一个POST请求与客户信息和我们的推荐.但是对于我的生活,我无法让它发挥作用.我已经完成了数百次而没有任何问题.

我监视了Fiddler中的标题,并完全复制了它们.网站似乎唯一设置的是4个cookie值.一个是xsrf(当你访问提交页面时自动设置,我能够从源代码中检索它,或者通过访问CookieContainer),另外两个似乎与会话相关但是是加密的.所以我做的是让我的软件访问页面,存储cookie,然后提交帖子请求.

我已经尝试在禁用JavaScript的情况下手动提交表单.它有效.所以我可以假设没有使用JavaScript设置变量或cookie.

我无法理解的是为什么表格没有提交.

我唯一能想到的是cookie中的会话数据是加密的,并且存储了浏览器提供的一些值.但是没有JavaScript,浏览器可以提供什么样的价值,而我的软件不是?

我已经设置了所有常用的用户代理等.正如我所说,我已经完成了数百次,并且从未遇到过像这样的问题.

我还使用Fiddler来获取cookie信息,并将其直接放入软件中(使用与用户代理设置在软件上相同的浏览器),这在理论上应该可行,但事实并非如此.

我已将POST请求与来自浏览器的POST请求进行了比较,并且它们都是相同的.唯一不同的是会话cookie值,它们是加密的.

从Web服务器返回没​​有错误.响应代码为200.唯一的区别是当报价成功提交时,页面将包含"报价成功"文本.这是我无法用软件实现的.

我打电话给保险提供者,因为他们不管理他们的网站而无法提供帮助.他们没有API,但只要我们提供推荐ID,就允许我们公司通过软件提出请求.

关于可能会发生什么的任何想法?

我记录的是使用C#和HTTPClient.我不确定这是否相关.

编辑:

我注意到的一件事是,在对包含引用表单的页面的GET请求 - 使用浏览器 - 我注意到从服务器返回以下标头:

 P3P: CP="CAO PSA OUR"
Run Code Online (Sandbox Code Playgroud)

此外,当在浏览器中成功发送POST请求时,它也会返回此标头.

但是,当我用软件发出GET请求时,我注意到服务器响应了P3P标头,但是POST请求却没有.这可能是相关/重要的吗?

El *_*rko 7

你可能远远超过我,它看起来相当陌生,但它们是否有可能使用某种形式的暂时或请求条件保护?例如:

  • 在发布表单之前,您必须请求X页面和Y页面(加密的cookie可能包含先前请求的URI,或者从服务器发出的会话状态)

  • 在发布表单之前,您必须在Y秒前请求X页面(加密的cookie可能包含该日期/时间)

  • 您之前/在特定时间范围内不得张贴此表单,并且相应地调整/删除Cookie

也许一些程序员试图阻止自动提交或关闭一个hypthetical攻击向量.

我不确定你是否已经完成了这项工作,但是可能值得尝试从其首页进行干净的网站访问(或者尽可能接近表格提交到手工工作),并使用明确的cookie和缓存从一开始就观察HTTP请求/响应流量,看看:

  • 确切地说,浏览器在每个请求中发送的标头
  • 哪个回复包含相关的Cookie(以及该请求包含哪些内容)

要做到这一点,我可能会向合唱团讲道,但是使用Chrome浏览器,你可以清除cookie,打开一个空白标签,点击F12开发工具,输入一个URL,然后通过F12'd窗口,选择网络和你将看到所有请求/响应对的列表.单击任何一个并查看请求和响应源文本,然后查找"Cookie"选项卡,该选项卡可以让您查看已发送接收的Cookie - 这样您就可以看到哪个请求产生了Cookie.也许强制/跟踪对该页面的访问.

(谷歌搜索表明P3P标题是一个电子隐私声明,因此不太可能相关.)

  • 在一家保险公司工作了很多年之后,我不会感到惊讶的是,他们会去(或要求他们的科技公司)相当长的时间来阻止这种方法.基本上,许多保险公司希望保护他们的在线报价系统免受未经授权的报价比较聚合器网站的影响,并且会提出一些非常强大的技术,如本答案中提到的那些.我意识到OP已经提到该公司已授权他这样做,但开发人员可能在设计时有不同的简介. (2认同)