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