@@ -15,68 +15,69 @@ typedef void Fun(char *, int);
1515FILE * fp = NULL ;
1616_Bool dowm_flag = 0 ;
1717
18- const char * format_headers = (
19- "GET %s HTTP/1.1\r\n"
20- "Host: %s\r\n"
21- "Connection: keep-alive\r\n"
22- "Accept: */*\r\n"
23- "%s"
24- "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47\r\n\r\n"
25- );
18+ const char * format_headers = ("GET %s HTTP/1.1\r\n"
19+ "Host: %s\r\n"
20+ "Connection: keep-alive\r\n"
21+ "Accept: */*\r\n"
22+ "%s"
23+ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47\r\n\r\n" );
2624
2725// Get admin from url(String Slicing)
28- void get_admin (const char * url , char * admin )
26+ void get_admin (const char * url , char * admin )
2927{
30- int start = 7 ;
31- if (strstr (url , "https" ))
32- start ++ ;
33- char * r1 = strchr (url + start , ':' );
34- char * r2 = strchr (url + start , '/' );
35- int admin_len = r1 ? r1 - url - start : r2 ? r2 - url - start : strlen (url )- start ;
36-
37- strncpy (admin , url + start , admin_len );
28+ int start = 7 ;
29+ if (strstr (url , "https" ))
30+ start ++ ;
31+ char * r1 = strchr (url + start , ':' );
32+ char * r2 = strchr (url + start , '/' );
33+ int admin_len = r1 ? r1 - url - start : r2 ? r2 - url - start
34+ : strlen (url ) - start ;
35+
36+ strncpy (admin , url + start , admin_len );
3837}
3938
4039void get_admin_ip (const char * url , char * ip )
4140{
42- char admin [30 ] = {0 };
41+ char admin [30 ] = {0 };
4342 get_admin (url , admin );
4443
45- struct hostent * phst = gethostbyname (admin );
46- struct in_addr * iddr = (struct in_addr * )phst -> h_addr ;
47- inet_ntoa (* iddr );
48- strcpy (ip , inet_ntoa (* iddr ));
44+ struct hostent * phst = gethostbyname (admin );
45+ struct in_addr * iddr = (struct in_addr * )phst -> h_addr ;
46+ inet_ntoa (* iddr );
47+ strcpy (ip , inet_ntoa (* iddr ));
4948}
5049
5150// If url contians https, return 443, else return 80
52- int get_url_port (const char * url )
51+ int get_url_port (const char * url )
5352{
5453 int port ;
5554 char * p ;
5655
57- if (p = strchr (url + 7 , ':' ))
56+ if (p = strchr (url + 7 , ':' ))
5857 {
59- sscanf (p + 1 , "%d" , & port );
58+ sscanf (p + 1 , "%d" , & port );
6059 return port ;
6160 }
62-
63- char * ret = strstr (url , "https" );
64- return ret ? 443 : 80 ;
61+
62+ char * ret = strstr (url , "https" );
63+ return ret ? 443 : 80 ;
6564}
6665
6766_Bool get_file_name (char * header , char * filename )
6867{
6968 char str [200 ];
7069 char * p ;
7170 p = strstr (header , "Content-Disposition" );
72- if (p == NULL ) return 0 ;
71+ if (p == NULL )
72+ return 0 ;
7373 sscanf (p , "%*s %[^\n]" , str );
7474 p = strchr (str , '\'' );
75- if (p == NULL ) return 0 ;
75+ if (p == NULL )
76+ return 0 ;
7677 p += 2 ;
77- strncpy (filename , p , strlen (p )- 1 );
78- filename [strlen (p )- 1 ] = '\0' ;
79-
78+ strncpy (filename , p , strlen (p ) - 1 );
79+ filename [strlen (p ) - 1 ] = '\0' ;
80+
8081 return 1 ;
8182}
8283
@@ -86,8 +87,8 @@ void check_type(const char *url, char *type, char *filename, int nameflag)
8687
8788 if (type == NULL )
8889 return ;
89-
90- for (int i = 0 ; i < 4 ; i ++ )
90+
91+ for (int i = 0 ; i < 4 ; i ++ )
9192 {
9293 if (strstr (type , type_list [i ]))
9394 return ;
@@ -99,8 +100,8 @@ void check_type(const char *url, char *type, char *filename, int nameflag)
99100 char * q = strrchr (p , '?' );
100101 if (q )
101102 {
102- strncpy (filename , p , q - p );
103- filename [q - p ] = '\0' ;
103+ strncpy (filename , p , q - p );
104+ filename [q - p ] = '\0' ;
104105 }
105106 else
106107 {
@@ -112,7 +113,7 @@ void check_type(const char *url, char *type, char *filename, int nameflag)
112113 char ext [10 ] = {0 };
113114 ext [0 ] = '.' ;
114115
115- sscanf (type , "%*[^/]/%[a-zA-Z]" , ext + 1 );
116+ sscanf (type , "%*[^/]/%[a-zA-Z]" , ext + 1 );
116117 strcat (filename , ext );
117118 }
118119 }
@@ -125,42 +126,41 @@ int request(const char *sUrl, Fun *fun)
125126 struct sockaddr_in servaddr ;
126127 clock_t start , end ;
127128 SOCKET sockfd ;
128-
129- char buf [MAXRECV + 1 ] = {0 };
130- char send_msg [strlen (format_headers ) + strlen (sUrl )* 2 ];
129+
130+ char buf [MAXRECV + 1 ] = {0 };
131+ char send_msg [strlen (format_headers ) + strlen (sUrl ) * 2 ];
131132 char data_type [10 ] = "text/plain" ;
132133 char header [2500 ] = {0 };
133134 char admin [30 ] = {0 };
134135 char filename [100 ];
135- char ip [20 ] = {0 };
136+ char ip [20 ] = {0 };
136137 _Bool chunked = 1 ;
137138 int header_len = 0 ;
138139 int cont_len = 0 ;
139140 int data_len = 0 ;
140141 int status = 0 ;
141142 int r_len ;
142- int port ;
143+ int port ;
143144 char * p ;
144145 char * q ;
145-
146- WSADATA wsaData ;
147- WSAStartup (MAKEWORD (2 , 2 ), & wsaData );
146+
147+ WSADATA wsaData ;
148+ WSAStartup (MAKEWORD (2 , 2 ), & wsaData );
148149
149150 port = get_url_port (sUrl );
150- get_admin (sUrl , admin );
151+ get_admin (sUrl , admin );
151152 get_admin_ip (sUrl , ip );
152- sprintf (send_msg , format_headers , sUrl , admin , \
153- strstr (admin , "i.pximg.net" )?"referer: http://www.pixiv.net/\r\n" :""
154- );
153+ sprintf (send_msg , format_headers , sUrl , admin ,
154+ strstr (admin , "i.pximg.net" ) ? "referer: http://www.pixiv.net/\r\n" : "" );
155155
156156 sockfd = socket (AF_INET , SOCK_STREAM , 0 );
157157
158158 memset (& servaddr , 0 , sizeof (servaddr ));
159159
160160 servaddr .sin_family = AF_INET ;
161- servaddr .sin_addr .s_addr = inet_addr (PROXY_FLAG ? PROXY_IP : ip );
162- servaddr .sin_port = htons (PROXY_FLAG ? PROXY_PORT : port );
163-
161+ servaddr .sin_addr .s_addr = inet_addr (PROXY_FLAG ? PROXY_IP : ip );
162+ servaddr .sin_port = htons (PROXY_FLAG ? PROXY_PORT : port );
163+
164164 connect (sockfd , (struct sockaddr * )& servaddr , sizeof (servaddr ));
165165 send (sockfd , send_msg , strlen (send_msg ), 0 );
166166
@@ -170,14 +170,14 @@ int request(const char *sUrl, Fun *fun)
170170 {
171171 memset (buf , 0 , sizeof (buf ));
172172 r_len = recv (sockfd , buf , MAXBYTE , 0 );
173- memmove (header + header_len , buf , r_len );
173+ memmove (header + header_len , buf , r_len );
174174 header_len += r_len ;
175175 p = strstr (header , "\r\n\r\n" );
176176 if (p )
177177 {
178178 p [0 ] = '\0' ;
179179 p += 4 ;
180- data_len = header_len - ( p - header );
180+ data_len = header_len - ( p - header );
181181 break ;
182182 }
183183 }
@@ -186,7 +186,7 @@ int request(const char *sUrl, Fun *fun)
186186 if (q = strstr (header , "Content-Type" ))
187187 sscanf (q , "%*s %s" , data_type );
188188 check_type (sUrl , data_type , filename , get_file_name (header , filename ));
189-
189+
190190 // print response
191191 if (status != 200 )
192192 printf ("\n%s\n\n" , header );
@@ -199,15 +199,17 @@ int request(const char *sUrl, Fun *fun)
199199 sscanf (p , "%*s %d" , & cont_len );
200200 }
201201
202- while (1 )
202+ while (1 )
203203 {
204204 if (!chunked )
205205 {
206- if (data_len >= cont_len ) break ;
206+ if (data_len >= cont_len )
207+ break ;
207208 }
208209 else
209210 {
210- if (strstr (buf , "\r\n0\r\n\r\n" )) break ;
211+ if (strstr (buf , "\r\n0\r\n\r\n" ))
212+ break ;
211213 }
212214 r_len = recv (sockfd , buf , MAXRECV , 0 );
213215 buf [r_len ] = '\0' ;
@@ -217,21 +219,20 @@ int request(const char *sUrl, Fun *fun)
217219 {
218220 end = clock ();
219221 printf ("\r" );
220- printf ("downloading %d/%d bytes %.0f%% - %.1fs" ,\
221- data_len , cont_len , (data_len /(float )cont_len )* 100 , (end - start )/1000.0
222- );
222+ printf ("downloading %d/%d bytes %.0f%% - %.1fs" ,
223+ data_len , cont_len , (data_len / (float )cont_len ) * 100 , (end - start ) / 1000.0 );
223224 }
224225 }
225226
226227 fclose (fp );
227228 closesocket (sockfd );
228- WSACleanup ();
229+ WSACleanup ();
229230
230231 return status ;
231232}
232233
233234// Example callback function
234- void process_data (char * str , int len )
235+ void process_data (char * str , int len )
235236{
236237 if (!dowm_flag )
237238 {
@@ -248,7 +249,7 @@ void https_to_http(char **url)
248249{
249250 if (url [1 ][4 ] == 's' )
250251 {
251- memmove (url [1 ]+ 1 , "http" , 4 );
252+ memmove (url [1 ] + 1 , "http" , 4 );
252253 url [1 ]++ ;
253254 }
254255}
@@ -267,7 +268,7 @@ int main(int argc, char *argv[])
267268
268269 if (argc < 3 || !strstr (argv [2 ], "-b" ))
269270 system ("chcp 65001" );
270-
271+
271272 https_to_http (argv );
272273 printf ("\n" );
273274 start = clock ();
@@ -276,7 +277,7 @@ int main(int argc, char *argv[])
276277 // request(url, process_data);
277278 end = clock ();
278279
279- printf ("\n\nexecution time %f seconds\n" , (end - start )/ 1000.0 );
280+ printf ("\n\nexecution time %f seconds\n" , (end - start ) / 1000.0 );
280281
281282 return 0 ;
282283}
0 commit comments