有些网站不会赞成程序直接用上面的方式进行访问,若是识别有问题,那么站点根本不会响应,因此为了彻底模拟浏览器的工做,咱们须要设置一些Headers 的属性。浏览器
首先,打开咱们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意以下,好比知乎,点登陆以后,咱们会发现登录以后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好屡次请求,通常是首先请求HTML文件,而后加载JS,CSS 等等,通过屡次请求以后,网页的骨架和肌肉全了,整个网页的效果也就出来了。服务器
简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。
拆分这些请求,咱们只看一第一个请求,你能够看到,有个Request URL,还有headers,下面即是response,图片显示得不全,小伙伴们能够亲身实验一下。那么这个头中包含了许许多可能是信息,有文件编码啦,压缩方式啦,请求的agent啦等等。网络
其中,agent就是请求的身份,若是没有写入请求身份,那么服务器不必定会响应,因此能够在headers中设置agent,例以下面的例子,这个例子只是说明了怎样设置的headers,小伙伴们看一下设置格式就好。ide
import urllib
import urllib2 网站
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()编码
这样,咱们设置了一个headers,在构建request时传入,在请求时,就加入了headers传送,服务器若识别了是浏览器发来的请求,就会获得响应。url
另外,咱们还有对付”反盗链”的方式,对付防盗链,服务器会识别headers中的referer是否是它本身,若是不是,有的服务器不会响应,因此咱们还能够在headers中加入referer调试
例如咱们能够构建下面的headers
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' ,
'Referer':'http://www.zhihu.com/articles' }code