注册
登录
提问时间:2018/6/22 14:40:15    楼主:未知网友   阅读量:880

很多网站都不喜欢被爬虫程序访问,但又没有办法完全禁止,于是就设置了一些反爬策略。比如User Agent,中文名为用户代理,简称UA。User Agent存放于Headers中,服务器就是通过查看Headers中的User Agent来判断是谁在访问。

通过不同的浏览器访问,会有不同的User Agent,如果爬虫不设置的话,很容易被识别出来,就会被限制访问。一般的做法是收集很多不同的User Agent,然后随机使用。

那么如何设置User Agent呢,其实是有两种方法(以python为例)的:

一、在创建Request对象的时候,填入headers参数(包含User Agent信息),这个Headers参数要求为字典。


from urllib import request


if __name__ == "__main__":

    #以CSDN为例,CSDN不更改User Agent是无法访问的

    url = 'http://www.csdn.net/'

    head = {}

    #写入User Agent信息

    head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'

 #创建Request对象

    req = request.Request(url, headers=head)

    #传入创建好的Request对象

    response = request.urlopen(req)

    #读取响应信息并解码

    html = response.read().decode('utf-8')

    #打印信息

    print(html)


  二、在创建Request对象的时候不添加headers参数,在创建完成之后,使用add_header()的方法,添加headers。


from urllib import request


if __name__ == "__main__":

    #以CSDN为例,CSDN不更改User Agent是无法访问的

    url = 'http://www.csdn.net/'

    #创建Request对象

    req = request.Request(url)

    #传入headers

    req.add_header('User-Agent', 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19')

    #传入创建好的Request对象

    response = request.urlopen(req)

    #读取响应信息并解码

    html = response.read().decode('utf-8')

    #打印信息

    print(html)