关于libcurl模拟提交form
2018-06-17 21:56:39来源:未知 阅读 ()
因为本人对web机制了解较少,在使用C/libcurl中遇到了很多问题。主要的解决方式:
1,在网页源码中找到提交form的定位。也就是网页文件对应form中的action属性。往往都是提交到jsp或者php等脚本中运行的,而不是直接提交到本网页。
2,要注意http头。http头的不同会引起网页的不同反应。我做的一个小项目,在提交到两个网址php脚本时,都因为http头引起php脚本执行不正确。
3,重定向问题。
在一些网页中,返回的网页数据会带有重定向信息,这时要打开curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
以我目前掌握的,这个参数会自动跟踪http头中的重定向。这里之所以要打开,是因为重定向有一个超时参数,如果未能链接,
也会导致网页执行出现问题。
4,关于https,在编译libcurl的时候要加入openssl的支持。
5,在代码中加入curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);可以追踪数据的传输状态。
6,如果还是解决不了,使用Fiddler抓包。相比wireshark,Fiddler抓取https的包更加方便和快捷。
7,不要太懒,在接收字节流的时候用string之类的容器。老老实实用char *或者byte *。
最后再强调一下第六条:Fiddler可以更方便地抓https,通过比对包的不同可以轻松解决碰到的各种问题。
如果您抓包之后还是无法正常获取数据的话,最后的解决方案是:
curl_easy_setopt(m_curl, CURLOPT_TCP_KEEPALIVE, 1L);
我在post一个网站的时候出现了这个问题,一样的包浏览器能获取到结果而libcurl不能。猜想深层次原因的话,应该是没有回复keeplive包导致的服务器认为连接已断开导致不会向本地发送数据。但网站的后台代码与服务器配置已经不能知晓了....
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- 关于使用ffmpeg的一些牢骚 2020-05-08
- 生产者消费者算法模拟 c++ 2020-03-29
- 关于有趣的windows.h 2020-03-09
- 关于C/C++的各种优化 2020-02-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash