青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

HTTP/FTP客戶端開發庫:libwww、libcurl、libfetch 以及更多

網頁抓取和ftp訪問是目前很常見的一個應用需要,無論是搜索引擎的爬蟲,分析程序,資源獲取程序,WebService等等都是需 要的,自己開發抓取庫當然是最好了,不過開發需要時間和周期,使用現有的Open source程序是個更好的選擇,一來別人已經寫的很好了,就近考驗,二來自己使用起來非常快速,三來自己還能夠學習一下別人程序的優點。

閑來無事,在網上瀏覽,就發現了這些好東西,特別抄來分享分享。主要就是libwwwlibcurllibfetch 這三個庫,當然,還有一些其他很多更優秀庫,文章后面會有簡單的介紹。

libwww
官方網站:http://www.w3.org/Library/
更多信息:http://www.w3.org/Library/User/
運行平臺:Unix/Linux,Windows

以下資料來源:http://9.douban.com/site/entry/15448100/http://zh.wikipedia.org/wiki/Libwww

簡介:
Libwww
是一個高度模組化用戶端的網頁存取API ,用C語言寫成,可在 Unix Windows 上運行。 It can be used for both large and small applications including: browsers/editors, robots and batch tools. There are pluggable modules provided with Libwww which include complete HTTP/1.1 with caching, pipelining, POST, Digest Authentication, deflate, etc. The purpose of libwww is to serve as a testbed for protocol experiments. 蒂姆·伯納斯-李 在 1992 年十一月創造出了 Libwww,用於展示網際網路的潛能。使用 Libwww 的應用程式,如被廣泛使用的命令列文字瀏覽器 Lynx Mosaic web browser 即是用 Libwww 所寫成的。 Libwww 目前為一開放原始碼程式,并於日前移至 W3C 管理?;镀錇殚_放原始碼的特性,任何人都能為 Libwww 付出一點心力,這也確保了 Libwww 能一直進步,成為更有用的軟體。

操作示例:
最近我需要寫點頁面分析的東西,這些東西某些程度上類似搜索引擎的爬蟲->parser->存儲的過程。

過去我常用的抓取頁面的庫是libcurl,這個東西是unix常用命令curl的基礎,curl被稱做命令行瀏覽器,功能強大,支持的協議也全面。遺憾的是libcurl僅僅是個支持多協議的抓取庫,不能做解析。

找來找去,發現了w3cLibwww庫,這東西功能強大的嚇人,不僅有解析,還有robot(也就是爬蟲了,或是叫internet walker)功能。在Libwww基礎上完成的程序很多,最著名的大概是字符模式的瀏覽器lynx。我幾乎就覺得這就我需要的東西了,立刻dive into。

一 整天之后,我終于能用這東西抓下來頁面,并且從html頁面中分析出來一些信息了,但是想更進一步就變的異常困難。因為這個庫功能太復雜了。這東西文檔不 詳細,被人提及的也少。Libwww最近的Release 5.3.2,發布于20001220。一個有這么多年歷史的東西,竟然沒多少開發者在討論,非常不正常。

找來找去,最后在libcurlFAQ里面看到了和Libwww比較, 精選的讀者來信告訴我,不僅僅是我一個人被Libwww的復雜弄的暈了頭腦,我才花了一整天,寫信的那個哥們竟然用了一人月,還是在里面打轉,直到換了 curl才好。雖然這是libcurl推銷自己的方法,不過這些失敗的前輩的經驗讓我對自己的智商重新有了信心。看來這東西沒多少人討論是正常的...

好吧,我也投降,libcurlhtml解析功能,這沒關系,我找別的辦法好了...這么復雜的庫,再好我也實在沒辦法忍受下去了,再說我需要的功能其實也真沒Libwww那么復雜的。

寫程序其實很容易迷失,你會看到一個似乎很完美,什么都能做的東西,一下子就喜歡上它,但是最后往往還是無福消受。往往是那些,不那么成熟,多少有點小毛病的庫,組合在一起才是真正的解決方案。

libcurl

官方網站:http://curl.haxx.se/libcurl
更多特點:http://curl.haxx.se/docs/features.html
運行平臺:Unix/Linux,WindowsWindows上貌似也有實現)

以下資料來源:http://blog.csdn.net/hwz119/archive/2007/04/29/1591920.aspx

Libcurl為一個免費開源的,客戶端url傳輸庫,支持FTP,FTPS,TFTPHTTPHTTPSGOPHER,TELNET,DICT,FILELDAP,跨平臺,支持Windows,Unix,Linux等,線程安全,支持Ipv6。并且易于使用。

http://curl.haxx.se/libcurl/

http://curl.haxx.se/libcurl/ 下載一個穩定的版本,注意選擇OS

編譯libcurl

下載下來的是源碼包,需要編譯。

解壓zip文件,進入curl-7.14.0\lib目錄(我下載的是7.14.0)。

編譯Debug版本。新建一個批處理bat文件,如buildDebug.bat,內容如下:

call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"

set CFG=debug-dll-ssl-dll-zlib-dll

set OPENSSL_PATH=E:\SSL\openssl-0.9.7e

set ZLIB_PATH=E:\zip\zlib123

nmake -f Makefile.vc6

其輸出:libcurld_imp.lib, libcurld.dll

編譯Release版本。新建一個批處理文件BuildRelease.bat,內容如下:

call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"

set CFG=release-dll-ssl-dll-zlib-dll

set OPENSSL_PATH=E:\SSL\openssl-0.9.7e

set ZLIB_PATH=E:\zip\zlib123

nmake -f Makefile.vc6

其輸出:libcurl_imp.lib, libcurl.dll

上面編譯的是libcurl dll,使用OpenSSL Dll版本和Zlib Dll版本。如果沒有,可以從www.openssl.org 或者http://www.zlib.net/ 下載。

如果需要編譯其他版本,可查看Makefile.vc6,設定相應的CFG 參數即可。

商業軟件使用libcurl時,只需要包含其copywrite聲明即可。

Sample

#include <stdio.h>
#include "../curl-7.14.0/include/curl/curl.h"
#pragma comment(lib, "../curl-7.14.0/lib/libcurl_imp.lib")

int main(void)
{
   curl = curl_easy_init();
 
if(curl) {

     CURLcode res;   
     res = curl_easy_setopt(curl, CURLOPT_PROXY, "Test-pxy08:8080");
     res = curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
     res = curl_easy_setopt(curl, CURLOPT_URL, "http://www.vckbase.com");
     res = curl_easy_perform(curl);

   
if(CURLE_OK == res) {
     
char *ct;
     
/**//* ask for the content-type */
     
/**//* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
       res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);

     
if((CURLE_OK == res) && ct)
         printf("We received Content-Type: %s ", ct);
     }

   
/**//* always cleanup */
     curl_easy_cleanup(curl);
   }
 
return 0;
}

libfetch
官方網站:http://libfetch.darwinports.com/
更多信息:http://www.freebsd.org/cgi/man.cgi?query=fetch&sektion=3
運行平臺:BSD

以下資料來源:http://bbs.chinaunix.net/viewthread.php?tid=105809

前幾天無雙老大在FB版介紹了一下CU的巨猛的法老級灌水大師,小弟于是說要編個程序自動來灌,哈哈昨晚有所突破,找到一個很好的庫,先介紹給各位大魚小蝦們,不過可別真的拿它來灌水啊,否則我被這里的班長們砍死以后的冤魂可要來算帳的喔! clip_image001  
這是在FreeBSD里找到的一個庫:libfetch,源代碼在/usr/src/lib/libfetch里,它對httpftp協議進行了封裝,提供了一些很容易使用的函數,因為昨天剛看到,還沒仔細研究,我試了一個用http取網頁的函數,示例如下:

#include <stio.h>
#include
#include

#include "fetch.h"

const char * myurl = "http://qjlemon:aaa@192.169.0.1:8080/test.html";

main()
{
         FILE * fp;
       
char buf[1024];

         fp = fetchGetURL(myurl, "";
       
if (!fp) {
                 printf("error: %s ", fetchLastErrString);
               
return 1;
         }
       
while (!feof(fp)) {
                 memset(buf, 0,
sizeof(buf));
                 fgets(buf,
sizeof(buf), fp);
               
if (ferror(fp))
                       
break;
               
if (buf[0])
                         printf("%s", buf);
               
else
                       
break;
         }
         fclose(fp);
         fp = NULL;
}


這里最重要的就是fetchGetURL函數,它按指定的URL來取文件,比如URL
是以http開頭的,這個函數就知道按http取文件,如果是ftp://,就會按ftp取文件,還可以指定用戶名和口令。
如果文件被取到,它會返回一個FILE指針,可以象操作普通的文件一樣把網頁的內容取出來。
另外這個庫還提供了一些函數,可以對網絡操作進行更為精細的控制。
當然最有用的是還是幾個PUT函數,想要灌水就得用這個喲!哈哈哈!

【其他相關HTTP/FTP客戶端庫】
資料來源:http://curl.haxx.se/libcurl/competitors.html

Free Software and Open Source projects have a long tradition of forks and duplicate efforts. We enjoy "doing it ourselves", no matter if someone else has done something very similar already.

Free/open libraries that cover parts of libcurl's features:

libcurl (MIT)

a highly portable and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TELNET, DICT, FILE, TFTP and LDAP. libcurl also supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunnelling and more!

libghttp (LGPL)

Having a glance at libghttp (a gnome http library), it looks as if it works rather similar to libcurl (for http). There's no web page for this and the person who's email is mentioned in the README of the latest release I found claims he has passed the leadership of the project to "eazel". Popular choice among GNOME projects.

libwww (W3C license) comparison with libcurl

More complex, and and harder to use than libcurl is. Includes everything from multi-threading to HTML parsing. The most notable transfer-related feature that libcurl does not offer but libwww does, is caching.

libferit (GPL)

C++ library "for transferring files via http, ftp, gopher, proxy server". Based on 'snarf' 2.0.9-code (formerly known as libsnarf). Quote from freshmeat: "As the author of snarf, I have to say this frightens me. Snarf's networking system is far from robust and complete. It's probably full of bugs, and although it works for maybe 85% of all current situations, I wouldn't base a library on it."

neon (LGPL)

An HTTP and WebDAV client library, with a C interface. I've mainly heard and seen people use this with WebDAV as their main interest.

libsoup (LGPL) comparison with libcurl

Part of glib (GNOME). Supports: HTTP 1.1, Persistent connections, Asynchronous DNS and transfers, Connection cache, Redirects, Basic, Digest, NTLM authentication, SSL with OpenSSL or Mozilla NSS, Proxy support including SSL, SOCKS support, POST data. Probably not very portable. Lacks: cookie support, NTLM for proxies, GSS, gzip encoding, trailers in chunked responses and more.

mozilla netlib (MPL)

Handles URLs, protocols, transports for the Mozilla browser.

mozilla libxpnet (MPL)

Minimal download library targeted to be much smaller than the above mentioned netlib. HTTP and FTP support.

wget (GPL)

While not a library at all, I've been told that people sometimes extract the network code from it and base their own hacks from there.

libfetch (BSD)

Does HTTP and FTP transfers (both ways), supports file: URLs, and an API for URL parsing. The utility fetch that is built on libfetch is an integral part of the FreeBSD operating system.

HTTP Fetcher (LGPL)

"a small, robust, flexible library for downloading files via HTTP using the GET method."

http-tiny (Artistic License)

"a very small C library to make http queries (GET, HEAD, PUT, DELETE, etc.) easily portable and embeddable"

XMLHTTP Object also known as IXMLHTTPRequest (part of MSXML 3.0)

(Windows) Provides client-side protocol support for communication with HTTP servers. A client computer can use the XMLHTTP object to send an arbitrary HTTP request, receive the response, and have the Microsoft? XML Document Object Model (DOM) parse that response.

QHttp (GPL)

QHttp is a class in the Qt library from Troll Tech. Seems to be restricted to plain HTTP. Supports GET, POST and proxy. Asynchronous.

ftplib (GPL)

"a set of routines that implement the FTP protocol. They allow applications to create and access remote files through function calls instead of needing to fork and exec an interactive ftp client program."

ftplibpp (GPL)

A C++ library for "easy FTP client functionality. It features resuming of up- and downloads, FXP support, SSL/TLS encryption, and logging functionality."

GNU Common C++ library

Has a URLStream class. This C++ class allow you to download a file using HTTP. See demo/urlfetch.cpp in commoncpp2-1.3.19.tar.gz

HTTPClient (LGPL)

Java HTTP client library.

Jakarta Commons HttpClient (Apache License)

A Java HTTP client library written by the Jakarta project.

 

posted on 2009-03-13 11:35 肥仔 閱讀(4234) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

評論

# re: HTTP/FTP客戶端開發庫:libwww、libcurl、libfetch 以及更多  回復  更多評論   

這篇好像是轉載哦,怎么都不注明呢?
2011-09-30 16:14 | callily
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一级精品大片| 欧美国产日韩精品免费观看| 亚洲天堂久久| 亚洲欧美春色| 国产老女人精品毛片久久| 久久精彩免费视频| 99视频精品免费观看| 亚洲精品小视频| 欧美激情第9页| 一区二区三区四区国产| 久久黄色影院| 99精品视频免费观看视频| 欧美三级乱码| 午夜精品久久久久久久99樱桃| 久久最新视频| 亚洲一区二区成人| 韩日精品中文字幕| 欧美另类综合| 性色av香蕉一区二区| 欧美激情一区二区三区在线视频观看 | 91久久久亚洲精品| 99精品视频免费观看视频| 国产精品色网| 欧美激情综合五月色丁香| 亚洲视频成人| 91久久极品少妇xxxxⅹ软件| 午夜精品久久久久久久99水蜜桃 | 国产在线麻豆精品观看| 欧美www视频| 久久精品国产视频| 亚洲色图综合久久| 亚洲精品小视频在线观看| 久久久久久久久久久久久久一区| 亚洲乱亚洲高清| 韩国欧美一区| 国产日韩欧美一区二区三区在线观看| 欧美精品日韩一区| 麻豆精品视频| 久久精品一二三| 久久国产精品久久精品国产| 亚洲综合色网站| 一本色道久久加勒比精品| 欧美国产日韩亚洲一区| 久久免费视频这里只有精品| 亚洲欧美日本伦理| 亚洲最新中文字幕| 亚洲日产国产精品| 尤物yw午夜国产精品视频明星 | 91久久国产自产拍夜夜嗨| 黄色成人av在线| 国产一区二区激情| 黑人一区二区| 亚洲国产精品成人综合| 日韩午夜激情av| 校园春色综合网| 亚洲区一区二| 在线观看一区| 激情综合五月天| 好吊日精品视频| 国产日韩视频| 国产亚洲欧美日韩日本| 国产精品成人国产乱一区| 欧美另类极品videosbest最新版本| 久久精品成人欧美大片古装| 性做久久久久久| 欧美在线观看日本一区| 久久成人18免费网站| 久久疯狂做爰流白浆xx| 久久久久久网址| 久久久久久久综合狠狠综合| 久久精品99国产精品| 两个人的视频www国产精品| 久久夜色精品国产欧美乱极品| 久久久久国产一区二区三区四区| 久久er精品视频| 欧美va亚洲va日韩∨a综合色| 欧美黄色日本| 欧美黄色影院| 国产精品视频第一区| 一区二区三区无毛| 亚洲精品美女久久7777777| 日韩亚洲欧美在线观看| 亚洲欧美精品在线观看| 久久国产黑丝| 欧美国产第二页| 在线亚洲精品| 久久久久久久999精品视频| 欧美精品播放| 欧美午夜不卡视频| 国产主播一区二区| 9人人澡人人爽人人精品| 欧美在线播放一区| 你懂的视频欧美| 一区二区日韩免费看| 久久激情五月激情| 欧美日韩精品免费观看视频| 国产真实久久| 亚洲综合99| 欧美福利视频一区| 亚洲综合精品| 欧美激情视频给我| 狠狠色丁香久久婷婷综合丁香| 99国产成+人+综合+亚洲欧美| 久久福利一区| 欧美日韩一区二区免费视频| 亚洲欧美在线高清| 久久久久久黄| 一区二区三区欧美在线| 蜜桃av一区二区三区| 国产日本欧美一区二区| 一本色道久久综合| 欧美 日韩 国产 一区| 亚洲欧美日产图| 欧美视频成人| 夜夜嗨av一区二区三区网页| 男同欧美伦乱| 久久九九99视频| 国产精品入口福利| 99精品欧美一区二区蜜桃免费| 久久综合网hezyo| 午夜一级在线看亚洲| 国产精品久久久久av| av不卡在线| 亚洲人成毛片在线播放| 欧美一区二视频| 国产欧美精品在线| 亚洲欧美日韩一区二区三区在线观看| 亚洲电影免费观看高清完整版在线| 久久精品国产久精国产爱| 国产亚洲欧洲| 久久久久国产成人精品亚洲午夜| 亚洲欧美国产另类| 国产精品稀缺呦系列在线| 香港久久久电影| 午夜精品av| 国内激情久久| 久久综合中文| 久久综合九色综合网站| 亚洲动漫精品| 亚洲国产日韩欧美| 欧美精品久久久久久久久久| 亚洲精品国产欧美| 亚洲精品一区二区在线| 欧美成人久久| 中国成人黄色视屏| 一区二区三区波多野结衣在线观看| 欧美成人免费在线视频| 999亚洲国产精| 一区二区高清| 国产日韩欧美在线播放| 久久国产视频网站| 麻豆成人小视频| 一本色道久久综合亚洲精品婷婷 | 一区二区视频欧美| 免费h精品视频在线播放| 欧美成人视屏| 亚洲社区在线观看| 久久国产精品72免费观看| 亚洲国产精品一区二区尤物区| 美女视频黄免费的久久| 母乳一区在线观看| 久久久福利视频| 国产午夜精品在线观看| 午夜精品久久久久久久久久久久久| 亚洲女与黑人做爰| 在线看日韩av| 亚洲午夜在线视频| 亚洲大黄网站| 国产精品99久久久久久白浆小说| 国产日韩欧美一二三区| 亚洲大胆av| 国产精品一区二区你懂得 | 一区二区三区偷拍| 国产一区二区三区久久| 91久久午夜| 国产三级精品在线不卡| 欧美激情一区二区久久久| 国产精品香蕉在线观看| 欧美黄色一区二区| 国产日韩欧美黄色| 亚洲美女视频在线观看| 一区免费观看| 亚洲一区二区三区成人在线视频精品| 亚洲国产日韩一区| 欧美在线播放视频| 性欧美办公室18xxxxhd| 欧美精品在线一区| 欧美成人午夜免费视在线看片| 国产精品久久久久久久一区探花| 亚洲成人资源| 尤物视频一区二区| 欧美在线高清视频| 香蕉视频成人在线观看| 欧美日韩精品一区二区在线播放| 蜜臀99久久精品久久久久久软件| 国产日韩欧美二区| 亚洲综合另类| 欧美在线精品一区| 国产精品免费看| 宅男精品视频|