zoukankan      html  css  js  c++  java
  • Linux企业级项目实践之网络爬虫(13)——处理user-agent

    User Agent即用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计。


    浏览器的UA字串的标准格式:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识版本信息。但各个浏览器有所不同。


    字串说明:
    1、浏览器标识
    出于兼容及推广等目的,很多浏览器的标识相同,因此浏览器标识并不能说明浏览器的真实版本,真实版本信息在 UA 字串尾部可以找到。


    2、操作系统标识


    3、加密等级标识
    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
    "
                "Host: %s
    "
                "Accept: */*
    "
                "Connection: Keep-Alive
    "
                "User-Agent: Mozilla/5.0 (compatible; Qteqpidspider/1.0;)
    "
                "Referer: %s
    
    ", 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;
    }


  • 相关阅读:
    信号与系统快速学习
    强化学习1
    微积分学习
    最优化学习4
    黑苹果安装显卡驱动、CUDA、cudnn
    Pandas处理txt文件(去重复行, 过滤行)
    xml -> dict
    数据结构与算法(四) --- 排序
    数据结构与算法(三) --- 链表
    数据结构与算法(二) --- 全排列、全组合
  • 原文地址:https://www.cnblogs.com/new0801/p/6176998.html
Copyright © 2011-2022 走看看