?

?

??1 /* ************open_login_page.c********** */
??2 #include? < stdio.h >
??3 #include? < string .h >
??4 #include? < curl / curl.h >
??5 #include? < curl / types.h >
??6 #include? < curl / easy.h >
??7
??8 int ?main( int ?argc,? char ? * argv[])
??9 {
?10 CURL? * curl;
?11 CURLcode?res;
?12
?13 struct ?curl_slist? * headerlist = NULL;
?14 static ? const ? char ?buf[]? = ? " Expect: " ;
?15
?16 curl_global_init(CURL_GLOBAL_ALL);
?17 curl? = ?curl_easy_init();
?18 headerlist? = ?curl_slist_append(headerlist,?buf);
?19
?20 if (curl)?
?21 {
?22 ????curl_easy_setopt(curl,?CURLOPT_URL,? " https://passport.baidu.com/?login " );
?23 ????curl_easy_setopt(curl,?CURLOPT_HTTPHEADER,?headerlist);
?24 ????curl_easy_setopt(curl,?CURLOPT_COOKIEJAR, " cookie_open.txt " ); // 把服務器發過來的cookie保存到cookie_open.txt
?25
?26 #ifdef?SKIP_PEER_VERIFICATION
?27 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYPEER,? 0L );
?28 #endif
?29
?30 #ifdef?SKIP_HOSTNAME_VERFICATION
?31 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYHOST,? 0L );
?32 #endif
?33 ????res? = ?curl_easy_perform(curl);
?34
?35 ???? /* ?always?cleanup? */
?36 ????curl_easy_cleanup(curl);
?37
?38 ???? /* ?free?slist? */
?39 ????curl_slist_free_all(headerlist);
?40 }

?41 return ? 0 ;
?42 }

?43
?44 /* *******************login_hi_baidu**************** */
?45 #include? < stdio.h >
?46 #include? < string .h >
?47 #include? < curl / curl.h >
?48 #include? < curl / types.h >
?49 #include? < curl / easy.h >
?50
?51 int ?main( int ?argc,? char ? * argv[])
?52 {
?53 CURL? * curl;
?54 CURLcode?res;
?55
?56 struct ?curl_slist? * headerlist = NULL;
?57 static ? const ? char ?buf[]? = ? " Expect: " ;
?58
?59 curl_global_init(CURL_GLOBAL_ALL);
?60 curl? = ?curl_easy_init();
?61 headerlist? = ?curl_slist_append(headerlist,?buf);
?62
?63 if (curl)?
?64 {
?65 ????curl_easy_setopt(curl,?CURLOPT_URL,? " https://passport.baidu.com/?login " );
?66 ????curl_easy_setopt(curl,?CURLOPT_HTTPHEADER,?headerlist);
?67
?68 ????curl_easy_setopt(curl,CURLOPT_POSTFIELDS, " username=ea99&password=&psp_tt=0&safeflg=0&return_method=get&u=http://hi.baidu.com/s%5Fyqguo " ); // 設置帳號密碼,其余的信息是頁面要求的,抓包即可看見。
?69
?70 ????curl_easy_setopt(curl,CURLOPT_COOKIEFILE, " cookie_open.txt " ); // 提交第一步保存的cookie
?71 ????curl_easy_setopt(curl,CURLOPT_COOKIEJAR, " cookie_login.txt " ); // 保存登陸后的cookie
?72 #ifdef?SKIP_PEER_VERIFICATION
?73 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYPEER,? 0L );
?74 #endif
?75
?76 #ifdef?SKIP_HOSTNAME_VERFICATION
?77 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYHOST,? 0L );
?78 #endif
?79
?80 ????res? = ?curl_easy_perform(curl);
?81 ???? /* ?always?cleanup? */
?82 ????curl_easy_cleanup(curl);
?83 ???? /* ?free?slist? */
?84 ????curl_slist_free_all(headerlist);
?85 }

?86 return ? 0 ;
?87 }

?88
?89
?90 /* ***********download_private_page.c***************** */
?91 #include? < stdio.h >
?92 #include? < string .h >
?93 #include? < curl / curl.h >
?94 #include? < curl / types.h >
?95 #include? < curl / easy.h >
?96
?97 static ?size_t?write_data( void ? * ptr,?size_t?size,?size_t?nmemb,? void ? * stream)
?98 {
?99 ??? int ?written? = ?fwrite(ptr,?size,?nmemb,?(FILE? * )stream);
100 ??? return ?written;
101 }

102
103 int ?main( int ?argc,? char ? * argv[])
104 {
105 CURL? * curl;
106 CURLcode?res;
107
108 static ? const ? char ? * headerfilename? = ? " head.out " ;
109 FILE? * headerfile;
110
111 static ? const ? char ? * bodyfilename? = ? " body.html " ;
112 FILE? * bodyfile;
113
114 struct ?curl_slist? * headerlist = NULL;
115 static ? const ? char ?buf[]? = ? " Expect: " ;
116
117 curl_global_init(CURL_GLOBAL_ALL);
118 curl? = ?curl_easy_init();
119 headerlist? = ?curl_slist_append(headerlist,?buf);
120 if (curl)?
121 {
122 ???? // 拉取私有頁面
123 ????curl_easy_setopt(curl,?CURLOPT_URL,? " http://hi.baidu.com/ea99/blog/item/c4e99e58d7ec9d86800a18a2.html " );
124 ????curl_easy_setopt(curl,?CURLOPT_HTTPHEADER,?headerlist);
125
126 ????curl_easy_setopt(curl,?CURLOPT_WRITEFUNCTION,?write_data);
127
128 ????headerfile? = ?fopen(headerfilename, " w " );
129 ???? if ?(headerfile? == ?NULL)?
130 ???? {
131 ??????curl_easy_cleanup(curl);
132 ??????curl_global_cleanup();
133 ??????curl_slist_free_all(headerlist);
134 ??????printf( " open?head.out?file?failed!\n " );
135 ?????? return ? - 1 ;
136 ????}

137
138 ????bodyfile? = ?fopen(bodyfilename, " w " );
139 ???? if ?(bodyfile? == ?NULL)?
140 ???? {
141 ??????curl_easy_cleanup(curl);
142 ??????curl_global_cleanup();
143 ??????curl_slist_free_all(headerlist);
144 ??????printf( " open?body.html?file?failed!\n " );
145 ?????? return ? - 1 ;
146 ????}

147
148 ????curl_easy_setopt(curl,CURLOPT_WRITEHEADER,?headerfile);
149 ????curl_easy_setopt(curl,CURLOPT_WRITEDATA,bodyfile);
150
151 ????curl_easy_setopt(curl,CURLOPT_COOKIEFILE, " cookie_login.txt " ); // 把第二步保存的cookie發送給服務器驗證
152
153 #ifdef?SKIP_PEER_VERIFICATION
154 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYPEER,? 0L );
155 #endif
156
157 #ifdef?SKIP_HOSTNAME_VERFICATION
158 ????curl_easy_setopt(curl,?CURLOPT_SSL_VERIFYHOST,? 0L );
159 #endif
160 ????res? = ?curl_easy_perform(curl);
161 ???? /* ?always?cleanup? */
162 ????curl_easy_cleanup(curl);
163 ???? /* ?free?slist? */
164 ????curl_slist_free_all(headerlist);
165 ????curl_global_cleanup();
166 ???? if (headerfile? != ?NULL)
167 ???fclose(headerfile);
168
169 ???? if (bodyfile? != ?NULL)
170 ???????fclose(bodyfile);
171
172 }

173 return ? 0 ;
174 }

175
176
177
178
179
180

?

?

?