Linux企業級專案實踐之網路爬蟲(13)——處理user-agent
User Agent即使用者代理,是Http協議中的一部分,屬於頭域的組成部分,User Agent也簡稱UA。它是一個特殊字串頭,是一種向訪問網站提供你所使用的瀏覽器型別及版本、作業系統及版本、瀏覽器核心、等資訊的標識。通過這個標識,使用者所訪問的網站可以顯示不同的排版從而為使用者提供更好的體驗或者進行資訊統計。
瀏覽器的UA字串的標準格式:瀏覽器標識 (作業系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識版本資訊。但各個瀏覽器有所不同。
字串說明:
1、瀏覽器標識
出於相容及推廣等目的,很多瀏覽器的標識相同,因此瀏覽器標識並不能說明瀏覽器的真實版本,真實版本資訊在 UA 字串尾部可以找到。
N: 表示無安全加密
I: 表示弱安全加密
U: 表示強安全加密
4、瀏覽器語言
在首選項 > 常規 > 語言中指定的語言
5、渲染引擎
顯示瀏覽器使用的主流渲染引擎有:Gecko、WebKit、KHTML、Presto、Trident、Tasman等,格式為:渲染引擎/版本資訊
6、版本資訊
瀏覽器的UA字串的標準格式:瀏覽器標識 (作業系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識版本資訊。但各個瀏覽器有所不同。
字串說明:
1、瀏覽器標識
出於相容及推廣等目的,很多瀏覽器的標識相同,因此瀏覽器標識並不能說明瀏覽器的真實版本,真實版本資訊在 UA 字串尾部可以找到。
2、作業系統標識
N: 表示無安全加密
I: 表示弱安全加密
U: 表示強安全加密
4、瀏覽器語言
在首選項 > 常規 > 語言中指定的語言
5、渲染引擎
顯示瀏覽器使用的主流渲染引擎有:Gecko、WebKit、KHTML、Presto、Trident、Tasman等,格式為:渲染引擎/版本資訊
6、版本資訊
顯示瀏覽器的真實版本資訊,格式為:瀏覽器/版本資訊
int send_request(int fd, void *arg)
{
int need, begin, n;
char request[1024] = {0};
Url *url = (Url *)arg;
sprintf(request, "GET /%s HTTP/1.0\r\n"
"Host: %s\r\n"
"Accept: */*\r\n"
"Connection: Keep-Alive\r\n"
"User-Agent: Mozilla/5.0 (compatible; Qteqpidspider/1.0;)\r\n"
"Referer: %s\r\n\r\n", url->path, url->domain, url->domain);
need = strlen(request);
begin = 0;
while(need) {
n = write(fd, request+begin, need);
if (n <= 0) {
if (errno == EAGAIN) { //write buffer full, delay retry
usleep(1000);
continue;
}
SPIDER_LOG(SPIDER_LEVEL_WARN, "Thread %lu send ERROR: %d", pthread_self(), n);
free_url(url);
close(fd);
return -1;
}
begin += n;
need -= n;
}
return 0;
}
相關文章
- Linux企業級專案實踐之網路爬蟲(28)——爬蟲socket處理Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(18)——佇列處理Linux爬蟲佇列
- Linux企業級專案實踐之網路爬蟲(5)——處理配置檔案Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(10)——處理HTTP狀態碼Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(11)——處理http請求頭Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(12)——處理HTTP應答頭Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(7)——DNS解析Linux爬蟲DNS
- Linux企業級專案實踐之網路爬蟲(19)——epoll介面Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(4)——主程式流程Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(8)——認識URLLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(25)——管理原始碼之SVNLinux爬蟲原始碼
- Linux企業級專案實踐之網路爬蟲(21)——擴充套件為多工爬蟲Linux爬蟲套件
- Linux企業級專案實踐之網路爬蟲(17)——儲存頁面Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(26)——執行緒池Linux爬蟲執行緒
- Linux企業級專案實踐之網路爬蟲(27)——多路IO複用Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(29)——遵守robots.txtLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(24)——定製規則擴充套件為垂直爬蟲Linux爬蟲套件
- Linux企業級專案實踐之網路爬蟲(9)——通過URL抓取網頁內容Linux爬蟲網頁
- Linux企業級專案實踐之網路爬蟲(22)——編寫爬蟲系統服務控制指令碼Linux爬蟲指令碼
- Linux企業級專案實踐之網路爬蟲(6)——將程式設計成為守護程式Linux爬蟲程式設計
- Linux企業級專案實踐之網路爬蟲(15)——區分文字檔案和二進位制檔案Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(14)——使用正規表示式抽取HTML正文和URLLinux爬蟲HTML
- Linux企業級專案實踐之網路爬蟲(20)——擴充套件成為規則外掛模式Linux爬蟲套件模式
- Linux企業級專案實踐之網路爬蟲(23)——系統測試:找出系統中的bugLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(16)——使用base64傳輸二進位制資料Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(30)——通過查閱RFC文件擴充更加複雜的功能Linux爬蟲
- 網路爬蟲專案爬蟲
- 企業資料爬蟲專案爬蟲
- 網路爬蟲專案蒐集爬蟲
- 企業資料爬蟲專案(二)爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 專案--python網路爬蟲Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- 如何處理識別出的網路爬蟲爬蟲