zoukankan      html  css  js  c++  java
  • requests使用小结(不定期更新)

    request是python的第三方库,使用上比urllib和urllib2要更方便。

    0x01 

    使用session发送:能保存一条流中获取的cookie,并自动添加到http头中

    s = requests.Session()

    resp=s.get(url,headers=header,verify=False,timeout=10)

    0x02

    post请求中payload的赋值

    payload={

        'param1':'value1',

        'param2':'value2',

       'param3':'value3'

    }

     resp=s.post(url,headers=header,data=payload,verify=False,timeout=10)

    抓包可以看到发送的data部分为:

    param1=value1&param2=value2&param3=value3

    如果需要对值中的数据进行url编码:

    import urllib

    payload="captchaChannel=211&params="123455""

    urllib.quote(payload,''=&")

    第二个参数表示不需要编码的字符,上例中只对引号“进行url编码,载荷为:

    captchaChannel=211&params=%22123455%22

    0x03

    post请求中既有payload,又要发送文件:

    假设文件是png格式图片,使用如下方式发送:

    image_file=open('img.png', 'rb').read()

    files = {'image': ('img.png', image_file)}

    params = {

    'username': self.username,

    'password': self.password,

    'softid': self.soft_id,

    'softkey': self.soft_key

    }

    resp= s.post(url, data=params, files=files, headers=self.headers)

    可以看到发送的内容是这样的,boundary应该是时间进行md5运算得到的值。这个后面跟的内容就是image文件。

    0x04 headers的赋值

    对于post请求可以不用手动填写Content-length,requests会自动帮我们计算并填写。

    headers使用字典格式赋值:

    header={
    'Host': 'www.******.com',
    'Connection': 'keep-alive',
    'Accept': '*/*',
    'Origin': 'https://www.*****.com',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/4.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.116 Safari/537.36',
    'Referer': 'https://www.*******************',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language':'zh-CN,zh;q=0.8',
    }

    add_header={
    'add1':'11111',
    'add2':'22222'
    }

    如果后续请求中需要添加字段,可以使用:

    header.update(add_header)

    0x05 使用requests访问https

    访问https的时候可以使用verify=False关掉验证

    r = resuqests.get("https://www.baidu.com",verify=False)

    print r.text

    但是在一台新装centos系统上如上运行,出现了报错,经过分析,发现是新系统没有装ssl证书。

    安装参考:http://blog.csdn.net/zuoyigexingfude/article/details/51035613

  • 相关阅读:
    vue组件详解(四)——使用slot分发内容
    vue组件详解(三)——组件通信
    vue组件详解(二)——使用props传递数据
    vue组件详解(一)——组件与复用
    vue表单详解——小白速会
    vue class与style 绑定详解——小白速会
    vue内置指令详解——小白速会
    vue计算属性详解——小白速会
    SQL查询当天、本周、本月记录详解
    SQL Server中使用convert进行日期转换
  • 原文地址:https://www.cnblogs.com/taurusfy/p/7424841.html
Copyright © 2011-2022 走看看