【问题标题】:How to add a request header at selenium-wire as passed argument?如何在 selenium-wire 添加请求标头作为传递的参数?
【发布时间】:2022-11-09 18:54:59
【问题描述】:

我需要的是设置定义在 def 拦截器(请求)函数之外的标头值。我怎样才能通过它?

def randomkeklul(main_arg):
    return random.choice(['kek', 'lul']), random.choice(main_arg)

def interceptor(request):
    request.headers['Accept-Encoding'] = value1
    request.headers['Accept-Language'] = value2

def main():
    main_arg = '12345'
    value1, value2 = randomkeklul(main_arg)
    driver.request_interceptor = interceptor

没用https://github.com/wkeeling/selenium-wire#example-add-a-request-header 它作为 driver.request_interceptor = 拦截器工作 但是如果我尝试添加参数,它看起来像

def randomkeklul(main_arg):
    return random.choice(['kek', 'lul']), random.choice(main_arg)

def interceptor(request,arg1,arg2):
    request.headers['Accept-Encoding'] = arg1
    request.headers['Accept-Language'] = arg2

def main():
    main_arg = '12345'
    value1, value2 = randomkeklul(main_arg)
    driver.request_interceptor = interceptor(arg1=value1, arg2=value2)

它引发错误

类型错误:拦截器()缺少 1 个必需的位置参数:“请求”

【问题讨论】:

    标签: python python-3.x seleniumwire


    【解决方案1】:

    我有同样的问题。对我来说唯一可行的方法是从其他函数/文件中获取参数:

    def interceptor(request):
        from custom_credentials import custom_credentials
        username, password = custom_credentials()
        
        auth_b = username + ':' + password
        
        auth = (
            base64.encodebytes(auth_b.encode())
                .decode()
                .strip()
        )
        
        del request.headers['Authorization']  
        request.headers['Authorization'] = f'Basic {auth}'  
    

    干杯, 米哈拉

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-12
      • 2023-01-25
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多