加载中…
个人资料
panlifang
panlifang
  • 博客等级:
  • 博客积分:0
  • 博客访问:110,097
  • 关注人气:6
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

c++ curl模拟登陆

(2011-10-26 15:35:48)
标签:

c

curl

模拟登陆

杂谈

我们在使用一些网站时,输入用户名,密码即可登陆该网站,登陆原理就是将用户输入的用户名和密码组合成一个特定字符串,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写程序:下面是关键的部分程序
int post_page_content(char* url)
{
  
  m_chunk.memory = (char*)malloc(1);   
  m_chunk.size = 0; 
  
  curl_easy_setopt(curl_handle, CURLOPT_URL, url);
  curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
  curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 1);
  curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, true);
  curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "mycookie.txt"); 
  curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "mycookie.txt"); 
 
   
  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
 
   
  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&m_chunk);
 
   
  curl_easy_setopt(curl_handle,          CURLOPT_POSTFIELDS,"action=Signin&eventSubmitDoPost=any&Done=http://china.abc.com/&urlType=&formSubmit=Y&LoginId="用户名"&Password="密码"");
 curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
 
   
  curl_easy_perform(curl_handle); 
   return 1;
}
char *myurl = "https://loginchina.abc.com/member/signin.htm";
post_page_content(myurl);

经过这两个步,c++程序就可以模拟登陆了

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有