开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: love99
收起左侧

[C/C++] 求一个C++ post 登录QQ空间的例程

[复制链接]
结帖率:67% (2/3)
发表于 2016-1-29 14:54:21 | 显示全部楼层   北京市北京市
我来支持下
回复

使用道具 举报

发表于 2016-2-6 21:27:53 | 显示全部楼层   湖北省黄冈市
怎么处理验证码也不是很复杂
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2016-2-6 23:04:57 | 显示全部楼层   湖南省长沙市
abel123 发表于 2016-2-6 21:27
怎么处理验证码也不是很复杂

易语言倒是会,只是C的代码不是很熟悉
不会转换,要不你帮我写一个呗
大过年的,可以给你个红包
比如这个网站http://gamevip.qq.com/
我用的是VS2013
回复

使用道具 举报

发表于 2016-3-27 17:40:06 | 显示全部楼层   北京市北京市
love99 发表于 2016-1-28 02:36
还是没弄明白,最新QQ登录RSA不对,你解决了没呀?

对方的代码是c#写的 不是c++哦 亲
回复

使用道具 举报

发表于 2016-6-8 10:52:27 | 显示全部楼层   山西省临汾市
  1. #include <iostream>
  2. #include <Winsock2.h>
  3. #include <string>

  4. using namespace std;

  5. #pragma comment(lib, "Ws2_32.lib")


  6. typedef struct tagRequest
  7. {
  8.   int port;
  9.   string addr;
  10.   string host;
  11.   string msg;
  12. } REQUEST;


  13. int InitSocket();

  14. char* HttpGet(REQUEST get);
  15. char* HttpPost(REQUEST post);


复制代码

  1. #include "HttpRequest.h"

  2. int InitSocket()
  3. {
  4.   WORD wVersionRequested;
  5.   WSADATA wsaData;
  6.   int err;

  7.   wVersionRequested = MAKEWORD(2, 2);

  8.   err = WSAStartup(wVersionRequested, &wsaData);
  9.   if (err != 0) {
  10.     /* Tell the user that we could not find a usable */
  11.     /* WinSock DLL.                                  */
  12.     return 0;
  13.   }

  14.   /* Confirm that the WinSock DLL supports 2.2.*/
  15.   /* Note that if the DLL supports versions greater    */
  16.   /* than 2.2 in addition to 2.2, it will still return */
  17.   /* 2.2 in wVersion since that is the version we      */
  18.   /* requested.                                        */

  19.   if (LOBYTE(wsaData.wVersion) != 2 ||
  20.     HIBYTE(wsaData.wVersion) != 2) {
  21.     /* Tell the user that we could not find a usable */
  22.     /* WinSock DLL.                                  */
  23.     WSACleanup();
  24.     return 0;
  25.   }

  26.   /* The WinSock DLL is acceptable. Proceed. */
  27.   return 1;
  28. }

  29. char* HttpPost(REQUEST post)
  30. {
  31.   
  32.   const char* addr = post.addr.c_str();
  33.   const char* host = post.host.c_str();
  34.   int port = post.port;
  35.   const char* msg = post.msg.c_str();

  36.   char* pHttpPost =
  37.     "POST %s HTTP/1.1\r\n"
  38.     "Host: %s:%d\r\n"
  39.     "Content-Type: application/x-www-form-urlencoded\r\n"
  40.     "Content-Length: %d\r\n\r\n"
  41.     "%s";

  42.   char strHttpPost[1024] = { 0 };
  43.   sprintf(strHttpPost, pHttpPost, addr, host, port, strlen(msg), msg);

  44.   InitSocket();

  45.   struct hostent* lpUrl = gethostbyname(host);
  46.   if (NULL == lpUrl)
  47.     return " ";

  48.   SOCKET sockClt = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  49.   SOCKADDR_IN addrSrv;
  50.   addrSrv.sin_family = AF_INET;
  51.   addrSrv.sin_port = htons(80);
  52.   addrSrv.sin_addr.S_un.S_addr = *((unsigned long*)lpUrl->h_addr);

  53.   connect(sockClt, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

  54.   send(sockClt, strHttpPost, strlen(strHttpPost), 0);

  55.   char szRecvBuf[1024] = {0};
  56.   recv(sockClt, szRecvBuf, 1024, 0);

  57.   closesocket(sockClt);
  58.   WSACleanup();

  59.   return szRecvBuf;
  60. }

  61. char* HttpGet(REQUEST get)
  62. {
  63.   const char* addr = get.addr.c_str();
  64.   const char* host = get.host.c_str();
  65.   int port = get.port;
  66.   const char* msg = get.msg.c_str();

  67.   char *pHttpGet = "GET %s?%s HTTP/1.1\r\n"
  68.                    "Host: %s:%d\r\n\r\n";

  69.   char strHttpGet[1024] = { 0 };
  70.   sprintf(strHttpGet, pHttpGet, addr, msg, host, port);

  71.   InitSocket();

  72.   struct hostent* lpUrl = gethostbyname(host);
  73.   if (NULL == lpUrl)
  74.     return "";

  75.   SOCKET sockClt = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  76.   SOCKADDR_IN addrSrv;
  77.   addrSrv.sin_family = AF_INET;
  78.   addrSrv.sin_port = htons(80);
  79.   addrSrv.sin_addr.S_un.S_addr = *((unsigned long*)lpUrl->h_addr);

  80.   connect(sockClt, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

  81.   send(sockClt, strHttpGet, strlen(strHttpGet), 0);

  82.   char szRecvBuf[1024] = {0};
  83.   recv(sockClt, strHttpGet, strlen(strHttpGet), 0);

  84.   closesocket(sockClt);
  85.   WSACleanup();

  86.   return szRecvBuf;
  87. }
复制代码

  1. #include "HttpRequest.h"

  2. int main(void)
  3. {
  4.   REQUEST reqPost;
  5.   reqPost.addr = "http://bbs.pediy.com/login.php?do=login";
  6.   reqPost.host = "bbs.pediy.com";
  7.   reqPost.msg = "vb_login_username=XX&"
  8.                 "cookieuser=1&"
  9.                 "vb_login_password=&"
  10.                 "s=&"
  11.                 "securitytoken=guest&"
  12.                 "do=login&vb_login_md5password=xxxxxxxxxxxxxxx&"
  13.                 "vb_login_md5password_utf=xxxxxxxxxxxxxxx";

  14.   HttpPost(reqPost);

  15.   return 0;
  16. }
复制代码


我自己分装的 凑合用吧 还不完善懒得完善了。。 可以拿来学习一下原理
回复

使用道具 举报

结帖率:100% (4/4)
发表于 2016-7-20 23:54:52 | 显示全部楼层   河南省焦作市
我瞅瞅,看看怎么回事
回复

使用道具 举报

结帖率:71% (5/7)
发表于 2016-7-21 14:28:18 | 显示全部楼层   湖南省怀化市
楼主有封装好的c++ 类吗
回复

使用道具 举报

发表于 2017-1-22 08:34:49 | 显示全部楼层   山西省临汾市
love99 发表于 2016-1-28 15:46
易语言倒是会。只是不会将易语言转成C。。。。
刚接触C,也没多少时间研究
刚刚下载你写的那个源码了

骚年那个是 c#代码
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

发表于 2017-1-27 12:20:54 | 显示全部楼层   福建省宁德市
楼主还在吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表