?? 300行代碼打磨自己的搜索引擎myso.mht
字號(hào):
<input TYPE=3D"hidden" name=3D"action" =
value=3D"2"><BR>048 =20
</tr><BR>049 =20
</form><BR>050 =20
<tr><BR>051 =
=20
<td colspan=3D"3"> </td><BR>052 =
=20
=
</tr><BR>053 </table><BR>054 <=
table=20
width=3D"430" border=3D"0" align=3D"center"=20
cellspacing=3D"0"><BR>055 =20
<tr><BR>056 =
=20
<td><font color=3Dred><% if =
(!isblankstr(errmsg)) =20
/* report error */<BR>057 =
=20
=20
print("<b>=B2=E9=D1=AF=CA=A7=B0=DC:</b> =
%s", errmsg);<BR>058 =20
=20
else<BR>059 =
=20
=20
print("%.*s", qlen, qstart); /* output =
query=20
result */<BR>060 =
=20
%></font><BR>061 =
=20
</td><BR>062 =20
</tr><BR>063 =20
<tr><td> =
</td></tr><BR>064 =20
<tr><td><center><a=20
href=3D"http://www.eybuild.com" =
target=3D_blank>=D4=B4=C2=EB=CF=C2=D4=D8<A> |=20
<BR>065 =20
<a href=3D"maito=3Deybuild@hotmail.com" =
target=3D_blank>=C1=AA=CF=B5=D7=F7=D5=DF<A> =
|<BR>066 =20
<a=20
href=3D"http://www.eybuild.com" =
target=3D_blank>=B8=FC=B6=E0=D0=C5=CF=A2<A>=20
</center></td></tr><BR>067 =
=20
<tr><td><center>(=C0=B4=D7=D4:=20
=
http://www.eybuild.com)</center></td></tr><BR>068 =
</table><BR>069 <xmp><%=20
//=3Dbuff=20
=
%></xmp><BR>070 </body><BR>071 </=
html><BR>072 <BR>073 <%=20
@b<BR>074 @include=20
<undef.h><BR>075 @ifdef=20
WIN32<BR>076 @include=20
<winsock2.h><BR>077 @define close =20
=
closesocket<BR>078 @else<BR>079 @include=20
<unistd.h><BR>080 @include=20
<errno.h><BR>081 @include=20
<sys/types.h><BR>082 @include=20
<sys/socket.h><BR>083 @include=20
<netinet/in.h><BR>084 @include=20
<arpa/inet.h><BR>085 @include=20
<netdb.h><BR>086 @endif /* WIN32=20
*/<BR>087 @include <ebdef.h><BR>088 =20
int =
=20
sock =3D 0;<BR>089 =
=20
char =
=20
buff[4096] =3D "";<BR>090 =
int =20
=20
maxlen =3D sizeof(buff);<BR>091 =
=20
char * =20
qstart =3D ""; /* query =
result start=20
address */<BR>092 int =
=20
=
qlen =3D=20
0; /* query result length =
*/<BR>093 =20
char =
=20
errmsg[256] =3D "";<BR>094 =
=20
int =
=20
ret =3D OK;<BR>095 =20
<BR>096 /* wubi query =
*/<BR>097 =20
if (!isblankstr(G("querykey")) && =
<BR>098 =20
(sock =3D =
connect_query_host("qq.ip138.com",=20
errmsg)) > 0)<BR>099 =
{<BR>100 =20
char =20
req_buf[1024] =3D =
"";<BR>101 =20
char =20
query[256] =3D =
"";<BR>102 =20
<BR>103 =20
/* make query and http header =
*/<BR>104 =20
sprintf(query, =
"querykey=3D%s",=20
urlEncode(G("querykey")));<BR>105 =
=20
sprintf(req_buf, "POST http://qq.ip138.com/wb/wb.asp? =
HTTP/1.0\r\n"<BR>106 =
=20
=
=20
"Content-Type:=20
application/x-www-form-urlencoded\r\n"<BR>107 =
=20
=
=20
"Content-Length:=20
%d\r\n"<BR>108 =20
=
=20
"Host: qq.ip138.com\r\n"<BR>109 =20
=
=20
"\r\n"<BR>110 =
=20
=
=20
"%s", strlen(query),=20
query);<BR>111 <BR>112 =
=20
/* send =3D=3D> receive =3D=3D> parse result =
*/<BR>113 =20
if =
((ret=3Dsend_http_req(sock,=20
req_buf)) > 0)<BR>114 =
=20
{<BR>115 =20
if ((ret=3Drecv_http_req(sock, buff, =
sizeof(buff)))=20
> 0)<BR>116 =20
{<BR>117 =20
/* separate =
result=20
*/<BR>118 =
=20
if (NULL !=3D (qstart=3Dstrstr(buff, =
"<p=20
align=3D\"center\">\r\n")))<BR>119 =
=20
{<BR>120 =20
=
=20
qlen =3D strstr(qstart, "</p>") -=20
qstart;<BR>121 =20
}<BR>122 =20
}<BR>123 =20
}<BR>124 =
<BR>125 =
=20
close(sock);<BR>126 }<BR>127 =20
<BR>128 /* ip =
query=20
*/<BR>129 if (!isblankstr(G("ip"))=20
&& <BR>130 =
=20
(sock =3D =
connect_query_host("www.ip138.com",=20
errmsg)) > 0)<BR>131 =
{<BR>132 =20
char =20
req_buf[1024] =3D =
"";<BR>133 =20
char =20
query[256] =3D =
"";<BR>134 =20
<BR>135 =20
/* make query and http header =
*/<BR>136 =20
sprintf(query,=20
"ip=3D%s&action=3D2", G("ip"));<BR>137 =
=20
sprintf(req_buf, "POST=20
http://www.ip138.com/ips8.asp HTTP/1.0\r\n"<BR>138 =20
=
=20
"Referer:=20
http://www.ip138.com/\r\n"<BR>139 =
=20
=
=20
"Content-Type:=20
application/x-www-form-urlencoded\r\n"<BR>140 =
=20
=
=20
"Content-Length:=20
%d\r\n"<BR>141 =20
=
=20
"Host: www.ip138.com\r\n"<BR>142 =20
=
=20
"\r\n"<BR>143 =
=20
=
=20
"%s", strlen(query),=20
query);<BR>144 =20
=
=20
<BR>145 /* send =
=3D=3D>=20
receive =3D=3D> parse result */<BR>146 =
if ((ret=3Dsend_http_req(sock, req_buf)) =
>=20
0)<BR>147 =
{<BR>148 =20
if=20
((ret=3Drecv_http_req(sock, buff, sizeof(buff))) > =
0)<BR>149 =20
=20
{<BR>150 =20
if (NULL !=3D=20
(qstart=3Dstrstr(buff, "<ul =
class=3D\"ul1\">")))<BR>151 =20
=
=20
{<BR>152 =20
qlen =3D =
strstr(qstart,=20
"</td>") - qstart;<BR>153 =
=20
}<BR>154 =20
=20
}<BR>155 =
=20
}<BR>156 =
<BR>157 =20
close(sock);<BR>158 =20
}<BR>159 =
<BR>160 =20
/* make error message */<BR>161 =20
if (sock < 0 || ret < =
0)<BR>162 =20
{<BR>163 =
=20
make_error(errmsg);<BR>164 =20
=
}<BR>165 %> <BR>166 <BR>167&nbs=
p; <%=20
@g<BR>168 <BR>169 #ifdef=20
WIN32<BR>170 char * make_error(char *=20
errmsg)<BR>171 {<BR>172 =20
int =20
errcode;<BR>173 LPVOID =20
lpMsgBuf;<BR>174 =20
<BR>175 if (OK =3D=3D=20
(errcode=3DGetLastError()))<BR>176 =
=20
return "Ready";<BR>177 =
=20
<BR>178 FormatMessage( =
<BR>179 =20
=
FORMAT_MESSAGE_ALLOCATE_BUFFER |=20
<BR>180 =20
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -