python构造一个http请求

我们经常会用python来进行抓包,模拟登陆等等, 势必要构造http请求包。

http的request通常有4个方法get,post,put,delete,分别对应于查询,更新,添加,删除。我们经常用到的也就get,post。


1.用python构造get

#build request for accessed url
     homeReq = urllib.request.Request(
          url = csdnAccessModuleUrl
          )

     homeReq.add_header('Accept', 'text/html, application/xhtml+xml, */*');
     homeReq.add_header('Accept-Language', 'en-US')
     homeReq.add_header('Accept-Encoding', 'gzip, deflate')
     homeReq.add_header('Connection', 'Keep-Alive');
     homeReq.add_header('Referer', 'http://passport.csdn.net/account/login?from='+urllib.parse.quote(moduleUrl))#http%3a%2f%2fwrite.blog.csdn.net%2f')
     homeReq.add_header('User-Agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)');

     #open access url
     resp = urllib.request.urlopen(homeReq)

2.用python构造post
#build request for login url
     #post data
     postdata = {
         'u':username,
         'p':password,
         'remember':'1',
         't':'log',
         'f':urllib.parse.quote(moduleUrl),
         }

     postdata = urllib.parse.urlencode(postdata).encode('utf-8')
     print(postdata)

     req = urllib.request.Request(
          url = csdnLoginUrl,
          data = postdata)

     req.add_header('Accept', 'text/html, application/xhtml+xml, */*');
     req.add_header('Accept-Language', 'en-US')
     req.add_header('Accept-Encoding', 'gzip, deflate')
     req.add_header('Connection', 'Keep-Alive');
     req.add_header('Referer', csdnAccessModuleUrl)
     req.add_header('User-Agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)');

     #open login url
     r = urllib.request.urlopen(req)




通过上面2个例子我们可以发现, 当Request的postdata赋值时,则为post方法,默认为get。
posted @ 2013-07-18 16:30  muzizongheng  阅读(2317)  评论(0编辑  收藏  举报
如果我们时时忙着展现自己的知识, 将何从忆起成长所需的无知?