c++ curl模拟登陆

转自:http://blog.csdn.net/zengraoli/article/details/11522647

我们在使用一些网站时,输入用户名,密码即可登陆该网站,登陆原理就是将用户输入的用户名和密码组合成一个特定字符串,post给一个url地址,如果用户名密码正确,就可以登陆了,如果想使用程序模拟这种登陆过程,需要下面的步骤:


1 抓包工具,推荐使用HttpWatch专业版,输入用户名,密码就开始抓包,并从包的内容中分析出post的url地址和post的内容,下面是我分析的(举例说明,不是实际情况)
url地址:https://loginchina.abc.com/member/signin.htm
post内容:action=Signin&eventSubmitDoPost=any&Done=http://china.abc.com/&urlType=&formSubmit=Y&LoginId="用户名"&Password="密码"

2写程序:下面是关键的部分程序

  1. int post_page_content(char* url)  
  2. {  
  3.     
  4.   m_chunk.memory = (char*)malloc(1);     
  5.   m_chunk.size = 0;   
  6.     
  7.   curl_easy_setopt(curl_handle, CURLOPT_URL, url);  
  8.   curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);  
  9.   curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 1);  
  10.   curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, true);  
  11.   curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "mycookie.txt");   
  12.   curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "mycookie.txt");   
  13.    
  14.      
  15.   curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);  
  16.    
  17.      
  18.   curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&m_chunk);  
  19.    
  20.      
  21.   curl_easy_setopt(curl_handle,          CURLOPT_POSTFIELDS,"action=Signin&eventSubmitDoPost=any&Done=http://china.abc.com/&urlType=&formSubmit=Y&LoginId="用户名"&Password="密码"");  
  22.  curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");  
  23.    
  24.      
  25.   curl_easy_perform(curl_handle);   
  26.    return 1;  
  27. }  
  28. char *myurl = "https://loginchina.abc.com/member/signin.htm";  
  29. post_page_content(myurl);  



经过这两个步,c++程序就可以模拟登陆了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值