解析http302重定向url
2014-10-08 13:47
141 查看
bool urlparse(const u_char* data,u_int len)
{
ip_header *ih;
udp_header *uh;
tcp_header *th;
u_short sport,dport;
int ip_len = 0;
ih = (ip_header *)(data+0xE);
ip_len = (ih->ver_ihl & 0xf) * sizeof(unsigned long);
th = (tcp_header *) ((u_char*)ih + ip_len);
sport = ntohs( th->th_sport );
dport = ntohs( th->th_dport );
if ((ih->proto != IPPROTO_TCP))
return false;
std::string strdata((char*)th + sizeof(tcp_header),len - ip_len - sizeof(tcp_header)+1);
static char szTag0[] = "HTTP/1.1 302 Moved Temporarily\r\n";
static char szTag1[] = "Location: ";
static char szTag2[] = "\r\n\r\n";
size_t nP0 = strdata.find(szTag0);
if (nP0 == std::string::npos)
return false;
size_t nP1 = strdata.find(szTag1,nP0+strlen(szTag0));
if (nP1 == std::string::npos)
return false;
size_t nP2 = strdata.find(szTag2,nP1+strlen(szTag1));
if (nP2 == std::string::npos)
return false;
std::string strUrl = strdata.substr(nP1+strlen(szTag1),nP2-nP1-strlen(szTag1));
printf("url>%s\n",strUrl.c_str());
return true;
}
{
ip_header *ih;
udp_header *uh;
tcp_header *th;
u_short sport,dport;
int ip_len = 0;
ih = (ip_header *)(data+0xE);
ip_len = (ih->ver_ihl & 0xf) * sizeof(unsigned long);
th = (tcp_header *) ((u_char*)ih + ip_len);
sport = ntohs( th->th_sport );
dport = ntohs( th->th_dport );
if ((ih->proto != IPPROTO_TCP))
return false;
std::string strdata((char*)th + sizeof(tcp_header),len - ip_len - sizeof(tcp_header)+1);
static char szTag0[] = "HTTP/1.1 302 Moved Temporarily\r\n";
static char szTag1[] = "Location: ";
static char szTag2[] = "\r\n\r\n";
size_t nP0 = strdata.find(szTag0);
if (nP0 == std::string::npos)
return false;
size_t nP1 = strdata.find(szTag1,nP0+strlen(szTag0));
if (nP1 == std::string::npos)
return false;
size_t nP2 = strdata.find(szTag2,nP1+strlen(szTag1));
if (nP2 == std::string::npos)
return false;
std::string strUrl = strdata.substr(nP1+strlen(szTag1),nP2-nP1-strlen(szTag1));
printf("url>%s\n",strUrl.c_str());
return true;
}
相关文章推荐
- 解析http302重定向url
- HttpURLConnection 下载出现302 重定向问题
- HttpClient 4.1 post 继续访问 重定向,301,302 的url
- c#中HttpWebRequest对应302重定向为什么取不到 cookie
- HTTP header location 重定向 URL
- Android XML解析学习—Pull方式(HttpURLConnection xml)
- http的重定向状态码302,303,307
- 使用http_parser解析URL
- 利用http302临时重定向实现不可重入地址的后退
- 如何通过HttpURLConnection得到http 302的跳转地址
- HttpURLConnection重定向,获取及设置cookie
- HttpURLConnection重定向,获取及设置cookie
- [HTTP]_[C/C++]_[解析URL的转义字符百分比字符串]
- 重定向(response.sendRedirect)乱码 和 HTTP response code: 400 for URL问题
- httpUrlConnection完全解析
- php http 301 302 重定向 跳转
- URL解析的几种模式以及拟静态重定向问题
- HttpURLConnection完全解析
- 使用PHP进行HTTP重定向(301,302)
- [HTTP]_[C/C++]_[解析URL的转义字符百分比字符串]