• python3 使用Fiddler捕获的Raw信息带cookie使用GET或POST获取


    import requests
    from retrying import retry
    
    def is_request_exception(e):
        print(e)
        return True
    
    
    getcookie='''GET http://www.xxx.com HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Cookie: ASP.NET_SessionId=zempp5fkn3tdwzdee0jl3lvx
    Upgrade-Insecure-Requests: 1
    
    '''
    
    @retry(retry_on_exception=is_request_exception,wait_random_min=2000, wait_random_max=10000)
    def getWithFiddlerGetCookie(getcookie,visiturl):
        lines = [i.strip() for i in getcookie.split("
    ")]
        #fiddler request Raw 的起始行为完整
        (method, url, _) = lines[0].split()
    
        if method == 'POST':
            body = lines[-1]
            lines = lines[1:-2]#POSt则lines[-2]为''(空行), lines[-1]为body
        else:
            lines = lines[1:-2]#GET则lines[-1]为''(空行)
    
        headers = {}
        for line in lines:
            k, v = line.split(': ',1)
            headers[k] = v
    
        if method == 'POST':
            r = requests.post(visiturl, headers=headers, data=body, verify=False,timeout=30)
        else:
            r = requests.get(visiturl, headers=headers, verify=False,timeout=30)
        return r
    
    
    postcookie='''POST http://www.xxx.com HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
    Accept: application/json, text/javascript, */*; q=0.01
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Content-Length: 38
    Connection: keep-alive
    Cookie: ASP.NET_SessionId=zempp5fkn3tdwzdee0jl3lvx
    
    body=00001'''
    
    
    @retry(retry_on_exception=is_request_exception,wait_random_min=2000, wait_random_max=10000)
    def getWithFiddlerPostCookie(postcookie,visiturl,Referer,body):
        lines = [i.strip() for i in postcookie.split("
    ")]
        (method, url, _) = lines[0].split()
    
        if method == 'POST':
            #body = lines[-1] #数据由程序传递
            lines = lines[1:-2]#POSt则lines[-2]为'', lines[-1]为body
        else:
            lines = lines[1:-2]#GET则lines[-1]为''
    
        headers = {}
        for line in lines:
            k, v = line.split(': ',1)  #:注意后面有空格
            headers[k] = v
        headers['Referer']=Referer
        #requests 自动处理3xx
        if method == 'POST':
            r = requests.post(visiturl, headers=headers, data=body, verify=False,timeout=30)
        else:
            r = requests.get(visiturl, headers=headers, verify=False, timeout=30)
        return r

    其实两个函数的主体都是一样的。只是根据参数略加修改。

  • 相关阅读:
    如何编写一个有效的缓存
    [深入Maven源代码]maven绑定命令行参数到具体插件
    java.util.ServiceLoader的用法
    非阻塞算法-栈
    非阻塞算法-简单的计数器
    Excelbatis-一个将excel文件读入成实体列表、将实体列表解析成excel文件的ORM框架,简洁易于配置、可扩展性好
    教你如何迭代地遍历二叉树
    [开源项目]Shell4Win,一个在Windows下执行shell命令的解释器
    [LeetCode]Single Number II
    CAS5.3服务环境搭建
  • 原文地址:https://www.cnblogs.com/yanghao2008/p/11924816.html
Copyright © 2020-2023  润新知