二、操做系統標識瀏覽器
顯示瀏覽器的真實版本信息,格式爲:瀏覽器/版本信息安全
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; }