gpt4 book ai didi

c++ - 分析post请求

转载 作者:可可西里 更新时间:2023-11-01 16:34:26 25 4
gpt4 key购买 nike

我正在尝试使用 C++ Qt 发出发布请求。
目标站点是 http://www.artlebedev.ru/tools/decoder/advanced/
网站看起来是这样的: enter image description here

我用浏览器检查了它。
对我来说有一件奇怪的事情 - header 中的随机数。
所以,我不确定我是否正确发送了 post 请求的数据。

enter image description here

他们这样做是为了什么?我这样提出请求(就像浏览器一样):

postdata.append("accept:*/*&");
postdata.append("accept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3&");
postdata.append("Accept-Encoding:gzip,deflate,sdch&");
postdata.append("Accept-Language:en-US,en;q=0.8&");
postdata.append("Connection:keep-alive&");
postdata.append("Content-Length:36&");
postdata.append("Content-Type:application/x-www-form-urlencoded&");
postdata.append("Cookie:__utma=1.904416008.1352897318.1352905816.1352909441.3; __utmc=1; __utmz=1.1352897318.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __atuvc=7%7C46&");
postdata.append("Host:www.artlebedev.ru&");
postdata.append("Origin:http://www.artlebedev.ru&");
postdata.append("Referer:http://www.artlebedev.ru/tools/decoder/advanced/&");
postdata.append("User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11&");
postdata.append("X-Requested-With:XMLHttpRequest&");
postdata.append("random:0.9632773566991091&"); // I have no idea about this number
postdata.append("Form Dataview URL encoded&");
postdata.append("csin:0&");
postdata.append("csout:0&");
postdata.append("text:fvddas&");
postdata.append("Decode:go");

我得到网页的回答。但该网页不包含解码字符串。只有空刺。
它看起来是这样的: enter image description here

这是我第一次尝试post请求,请帮我想办法。

最佳答案

随机值看起来像某种 Cross-site request forgery token 来阻止人们做你想做的事情,但它实际上并没有被使用。如果我在没有任何 cookie 或随机值的情况下使用 Fiddler 重新发出请求,请求仍然会成功。

其实这个请求也是这样做的:

POST http://www.artlebedev.ru/tools/decoder/advanced/ HTTP/1.1
Host: www.artlebedev.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 33

csin=0&csout=0&text=foo&Decode=go

所以你的请求一定有问题,我想你不应该只是将来自外部查看器的请求复制粘贴到代码中,而应该看看你在做什么:

postdata.append("Form Dataview URL encoded&");

这不是 HTTP header 。服务器不响应 400 Bad Request 就更好了。该行的位置应该是单个 CRLF,用于将 header 与实体(“请求正文”)分开。

如果您在发送之前输出 postdata 的内容,以查看您是否发现错误,这可能会很有用。

也许如果您喜欢网站可以做的编码翻译(或它做的任何事情),您可以询问网站的创建者他们是否有一个您可以解决的公开可用的 API,或者他们甚至可以分享一些代码或将您指向有值(value)的资源,为您自己重新创建这样的转换。

关于c++ - 分析post请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com