Python requests库获取重定向跨域url及url中的cookie

最近公司要往一个网页上提交数据,所以直接用爬虫做接口了,当我登录完成后发现,网址不一样了而且用同样的session提交不了数据, 用抓包工具进行抓包发现是重定向了 而且不是一个,重定向了三个。3个公司的代码拼出了一套网页项目 😕 。
废话不多说,上代码:


# 获取请求url域名
def getHost(url):
    pattern = re.compile(r'(.*?)://(.*?)/', re.S)
    response = re.search(pattern, url)
    if response:
        return {'header':str(response.group(1)).strip(), 'host': str(response.group(2)).strip()}
    else:
        return None

#创建存储cookie的map
cookieType={}

#获取cookie
def getCode():
    locationList = set()
    cookie = ''
	
    loginAfterUrl = url # 开始重定的url
    try:
        while True:
   			#每次请求重定向中的url    allow_redirects=False 禁止重定向
            authResponse=session.get(url=resUrl,verify=False,allow_redirects=False)
            cookie = session.cookies.get_dict()
            hostObj = getHost(resUrl)
            if cookie == {}:
                pass
            else:
                cookieType[str(hostObj['host']).strip()] = json.dumps(cookie)  # 保存cookie
            # 获取跳转的url
            if 'Location' in authResponse.headers.keys():
                url = authResponse.headers.get('Location')
                if not 'http' in url:
                    url = hostObj['header'] + '://' + hostObj['host'] + url  # 拼接host域名
                resUrl = url
                # if url in locationList: break;
                locationList.add(url)
            else:
                break;
        return {'url': str(resUrl), 'content': authResponse.content, 'header': authResponse.headers}
    except TypeError :
        return "";
    except UnboundLocalError:
        return None;


运行完之后根据cookieTypep[host]获取对应的cookie;

摘要https://www.cnblogs.com/zengguowang/p/8404087.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值