wireshark只抓HTTP包 http and tcp.port == 80
月度归档: 2015 年 10 月
-
配置wireshark只抓HTTP包
-
delphi7使用idhttp获取https的页面代码
delphi7使用idhttp获取https的页面代码
procedure TForm1.Button1Click(Sender: TObject); var url:string; response:TStringStream; error:string; begin response:=TStringStream.Create(''); IdHTTP1.IOHandler := IdSSLIOHandlerSocket1; IdHTTP1.HandleRedirects:=false; IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3; url:='https://passport.jd.com/new/login.aspx'; try IdHTTP1.Get(url); except on E: Exception do error:=E.Message; end; url:= IdHTTP1.Response.Location; if error='HTTP/1.1 302 Found' then begin IdHTTP1.Get(url,response); Memo1.Text := response.DataString; end; response.Free; end;
需要把下面两个dll和exe放在一起
注意:不要在delphi ide中按F9运行, 这样(try except)异常会被IDE的调试器捕获,当然可以设置忽略异常,把异常传递给程序,不过并不推荐这样做,会影响下次调试。
看效果直接双击exe即可。
-
VC确保存路径存在在,如果不存在则创建
void MakeSureDirExist(const char * pPath ) { if ( pPath == NULL) return; std:: string strPath( pPath); if (strPath.at(strPath.length() - 1) != '\\') strPath += '\\'; int len = strPath.length(); for( int i =0; i < len; ++i) { if(strPath[i]== '\\') { :: CreateDirectory((strPath.substr(0, i)).c_str(), NULL ); } } }
-
std::string 常用函数
std::string 常用函数
string replace(const string & str , const string & src , const string & dest ) { string ret; string:: size_type pos_begin = 0; string:: size_type pos = str.find( src); while (pos != string::npos) { cout << "replacexxx:" << pos_begin <<" " << pos <<"\n"; ret.append( str.data() + pos_begin, pos - pos_begin); ret += dest; pos_begin = pos + 1; pos = str.find( src, pos_begin); } if (pos_begin < str.length()) { ret.append( str.begin() + pos_begin, str.end()); } return ret; } int split(const string & str , vector <string >& ret_, string sep = ",") { if ( str.empty()) { return 0; } string tmp; string:: size_type pos_begin = str.find_first_not_of( sep); string:: size_type comma_pos = 0; while (pos_begin != string::npos) { comma_pos = str.find( sep, pos_begin); if (comma_pos != string::npos) { tmp = str.substr(pos_begin, comma_pos - pos_begin); pos_begin = comma_pos + sep.length(); } else { tmp = str.substr(pos_begin); pos_begin = comma_pos; } if (!tmp.empty()) { ret_.push_back(tmp); tmp = ""; } } return 0; } string trim(const string & str ) { string:: size_type pos = str.find_first_not_of( ' '); if (pos == string::npos) { return str; } string:: size_type pos2 = str.find_last_not_of( ' '); if (pos2 != string::npos) { return str.substr(pos, pos2 - pos + 1); } return str.substr(pos); }
-
VC为RichTextBox添加右键菜单
VC为RichTextBox添加右键菜单
private void InitRichTextBoxContextMenu(RichTextBox textBox) { //创建剪切子菜单 var cutMenuItem = new MenuItem( "剪切"); cutMenuItem.Click += (sender, eventArgs) => textBox.Cut(); //创建复制子菜单 var copyMenuItem = new MenuItem( "复制"); copyMenuItem.Click += (sender, eventArgs) => textBox.Copy(); //创建粘贴子菜单 var pasteMenuItem = new MenuItem( "粘贴"); pasteMenuItem.Click += (sender, eventArgs) => textBox.Paste(); //创建右键菜单并将子菜单加入到右键菜单中 var contextMenu = new ContextMenu(); contextMenu.MenuItems.Add(cutMenuItem); contextMenu.MenuItems.Add(copyMenuItem); contextMenu.MenuItems.Add(pasteMenuItem); textBox.ContextMenu = contextMenu; //为richtextbox设置菜单 }
-
VC 获取跳转后的网址
VC 获取跳转后的网址
BOOL GetRedirectUrl(std::string strUrl , string &redirectUrl ) { //定义变量 HINTERNET hInet = NULL; //打开internet连接handle HINTERNET hConnect = NULL; //HTTP连接 HINTERNET hRequestHead = NULL; //HTTP Request HINTERNET hRequestGet = NULL; //HTTP Request HANDLE hFileWrite = NULL; //写文件的句柄 char* pBuf = NULL; //缓冲区 DWORD dwRequestTryTimes = MAX_DOWNLOAD_REQUEST_TIME; //尝试请求的次数 DWORD dwDownBytes = 0; //每次下载的大小 DWORD dwDownFileTotalBytes = 0; //下载的文件总大小 DWORD dwWriteBytes = 0; //写入文件的大小 char bufQueryInfo[ LEN_OF_BUFFER_FOR_QUERYINFO] = {0}; //用来查询信息的buffer DWORD dwBufQueryInfoSize = sizeof(bufQueryInfo); DWORD dwStatusCode = 0; DWORD dwContentLen = 0; DWORD dwSizeDW = sizeof( DWORD); //分割URL CHAR pszHostName[ INTERNET_MAX_HOST_NAME_LENGTH] = {0}; CHAR pszUserName[ INTERNET_MAX_USER_NAME_LENGTH] = {0}; CHAR pszPassword[ INTERNET_MAX_PASSWORD_LENGTH] = {0}; CHAR pszURLPath[ INTERNET_MAX_URL_LENGTH] = {0}; CHAR szURL[INTERNET_MAX_URL_LENGTH] = {0}; URL_COMPONENTSA urlComponents = {0}; urlComponents.dwStructSize = sizeof( URL_COMPONENTSA); urlComponents.lpszHostName = pszHostName; urlComponents.dwHostNameLength = INTERNET_MAX_HOST_NAME_LENGTH; urlComponents.lpszUserName = pszUserName; urlComponents.dwUserNameLength = INTERNET_MAX_USER_NAME_LENGTH; urlComponents.lpszPassword = pszPassword; urlComponents.dwPasswordLength = INTERNET_MAX_PASSWORD_LENGTH; urlComponents.lpszUrlPath = pszURLPath; urlComponents.dwUrlPathLength = INTERNET_MAX_URL_LENGTH; BOOL bRet = InternetCrackUrlA( strUrl.c_str(), 0, NULL, &urlComponents); bRet = (bRet && urlComponents.nScheme == INTERNET_SERVICE_HTTP); if (!bRet) { goto _END_OF_DOWNLOADURL; } //打开一个internet连接 hInet = InternetOpenA( DOWNHELPER_AGENTNAME, INTERNET_OPEN_TYPE_PRECONFIG , NULL, NULL , NULL ); if (!hInet) { bRet = FALSE; goto _END_OF_DOWNLOADURL; } //打开HTTP连接 hConnect = InternetConnectA(hInet, pszHostName, urlComponents.nPort, pszUserName, pszPassword, INTERNET_SERVICE_HTTP , 0, NULL ); if (!hConnect) { bRet = FALSE; goto _END_OF_DOWNLOADURL; } //创建HTTP request句柄 if (urlComponents.dwUrlPathLength != 0) strcpy(szURL, urlComponents.lpszUrlPath); else strcpy(szURL, "/"); //请求HEAD,通过HEAD获得文件大小及类型进行校验 hRequestHead = HttpOpenRequestA(hConnect, "HEAD", szURL, "HTTP/1.1" , "" , NULL , INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_AUTO_REDIRECT , 0); bRet = FALSE; dwStatusCode = 0; dwSizeDW = sizeof(DWORD); //发送请求 bRet = HttpSendRequestA(hRequestHead, NULL, 0, NULL, 0); if (!bRet) { bRet = FALSE; goto _END_OF_DOWNLOADURL; } else { //判断HTTP返回的状态码 dwStatusCode = 0; dwSizeDW = sizeof( DWORD); bRet = HttpQueryInfo(hRequestHead, HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE, &dwStatusCode, &dwSizeDW, NULL ); if (bRet) { //检查状态码 if ( HTTP_STATUS_OK == dwStatusCode) //200 OK { bRet = FALSE; goto _END_OF_DOWNLOADURL; } else if (302 == dwStatusCode) { //GetStatusCode(hRequest); TCHAR szBuffer[ INTERNET_MAX_URL_LENGTH] = {0}; DWORD dwLen = sizeof(szBuffer); // 获取HTTP请求信息(HTTP_QUERY_LOCATION获取的绝对URL在Location应答头) BOOL bRet = HttpQueryInfo(hRequestHead, HTTP_QUERY_LOCATION, szBuffer, &dwLen, NULL ); redirectUrl = szBuffer; goto _END_OF_DOWNLOADURL; bRet = TRUE; } else { bRet = FALSE; } } } //清理 _END_OF_DOWNLOADURL: if ( INVALID_HANDLE_VALUE != hFileWrite) CloseHandle(hFileWrite); if (pBuf) delete [] pBuf; if (hRequestGet) InternetCloseHandle(hRequestGet); if (hRequestHead) InternetCloseHandle(hRequestHead); if (hConnect) InternetCloseHandle(hConnect); if (hInet) InternetCloseHandle(hInet); return bRet; }