# encoding:utf-8

import re
import json
import random
from esdapi.config import BASE_URL
from requests.sessions import Session

class Ad09(object):
def __init__(self):
"""
初始化session 并设置header和cookie
"""
self.url = "http://xxxx/ad09/index"
self.s = Session()
self.s.headers.setdefault("Content_type", "application/x-www-form-urlencoded")
self.s.headers.update(Referer="http://172.21.2.3:8009/ad09")
self.s.cookies.update(self.get_cookies(self.url)[0])

# self.s.headers.update({"Cookies": self.get_cookies()})

def get_cookies(self,url):
"""
获取上一次请求的cookie
:return: 返回cookie dict
"""
r = self.s.get(url)
print(r.cookies.get_dict())
return (r.cookies.get_dict(), r.text)

def get_token(self):
"""
获取上一次请求隐匿的表单token
:return:
"""
pattern = 'name="__RequestVerificationToken" type="hidden" value="(.*)"'
p = re.compile(pattern)
text = self.get_cookies(self.url)[1]
if p.search(text):
token = p.search(text).groups()[0]
token = token.__str__().strip('"')
else:
return
return token

def get_mobile(self):
s = "144"
n = range(10)
for i in range(8):
s += random.choice(n).__str__()
if len(s) == 4 and s == "1442":
s = (int(s) - 1).__str__()
print(s)
return s

def Ad09_index(self):
param = {"__RequestVerificationToken": self.get_token(),
"FromPage": "ZaEsd-Ad09-",
"FromSE": "",
"CustomerId": "",
"ProductType": "all",
"Amounts": 50000,
"LoanTerm": 24,
"Name": u"测试",
"Mobile": self.get_mobile(),
"Province": "31b25d9c-912d-4db9-82ab-10d87a2885b3",
"City": "92ce2049-36bf-4ae6-b831-22359c38f337",
"hiddenLoanPurpose": 0,
"hiddenLoanPurposeDetail": "{8132707A-E2AE-4F58-85FC-F023277D845B}"}
r = self.s.post(self.url, data=param, allow_redirects=False)
print("Location url is:", r.headers["Location"])
try:
return (r.headers["Location"], json.loads(r.text))
except:
return (r.headers["Location"], r.text)

def get_Estimate(self):
path = self.Ad09_index()[0]
url = BASE_URL + path
r = self.s.get(url)
print(r.text)
return r.text

if __name__ == '__main__':
print(Ad09().get_Estimate())

request redirection的更多相关文章

  1. nginx指令

    Directives(指令) Syntax(语法): aio on | off | threads[=pool]; Default: aio off; Context: http, server, l ...

  2. A JSTL primer, Part 2: Getting down to the core

    In the initial article of this series, you got your first look at JSTL. We described the use of its  ...

  3. ASP.NET-页面间的数据传递

    暑假期间做项目时遇到相关问题,总结如下,与大家分享 1.通过查询字符串传递 这种方式是将参数附加在网址的后面,传递数据简单,但容易暴露,一般用于传递一些简单的数据. 例如,在Default1.aspx ...

  4. Springboot security cas整合方案-原理篇

    前言:网络中关于Spring security整合cas的方案有很多例,对于Springboot security整合cas方案则比较少,且有些仿制下来运行也有些错误,所以博主在此篇详细的分析cas原 ...

  5. CDNI - RFC7336翻译

    CDNI框架 摘要 本文档提出了CDNI的一个框架.框架的目的是提供对CDNI问题空间的总体描述,和描述CDN互连所需的各种组件之间的 关系.CDNI需要指定接口和机制解决诸如请求路由,分发交换元数据 ...

  6. [nginx] load balancing & location

    一 将NGINX配置成7层load balancer,该怎么做? 参见: http://nginx.org/en/docs/http/load_balancing.html https://docs. ...

  7. activate mod_rewrite How To Set Up mod_rewrite for Apache on Ubuntu 14.04 Apache Rewrite url重定向功能的简单配置

    https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-0 ...

  8. nignx的location正则匹配

    原文链接:http://nginx.org/en/docs/http/ngx_http_core_module.html Syntax: location [ = | ~ | ~* | ^~ ] ur ...

  9. 【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php

    问题描述 参考官方文档部署 PHP Laravel 项目到App Service for Linux环境中,但是访问应用时候遇见了500 Server Error 错误. 从部署的日志中,可以明确看出 ...

随机推荐

  1. Postgresql数据库部署之:Postgresql 存在session 会话不能删除数据库

    SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='数据库名' AND pid<>pg_backen ...

  2. js坚持不懈之12:var b = {a:1};

    今天看到一篇博客,在声明一个变量的时候用了如下格式的语法: var b = {a:1}; 不明白,百度一下.作如下解释: var: 声明一个变量 b: 表示变量的名称 =: 赋值符号 {}: 表示一个 ...

  3. memcached架构及缓存策略

    ----------------------------------------概述---------------------------------------- Memcached是一套高性能分布 ...

  4. 使用jquery模拟请求,测试项目是否存在跨域限制

    1.Get 请求 <html> <head><script src="https://cdn.staticfile.org/jquery/1.10.2/jque ...

  5. 史上最全的Spring-Boot-Starter开发手册

    1.前面的话 我们都知道可以使用 SpringBoot 快速的开发基于 Spring 框架的项目.由于围绕 SpringBoot 存在很多开箱即用的 Starter 依赖,使得我们在开发业务代码时能够 ...

  6. 如何下载西门子产品CAD、3D和EPLAN文件

    使用CAx下载管理器可以访问产品的最新CAD和CAE数据. 介绍 技术数据中包含一系列产品的尺寸图.可使用CAx下载管理器,如果需要更多信息. 可以在西门子全球支持数据库中快速方便地找到 3D,CAx ...

  7. 技术的极限(6): 密码朋克精神(Cypherpunk Spirit)

    上一篇:技术的极限(5): 识别计算与技术背后的心智 下一篇:技术的极限(7): 处理复杂与分层 目录: ** 0x01 数据和App分离 ** 0x02 蒸汽朋克/赛博朋克/密码朋克 ** 0x03 ...

  8. c提高第四课

    1.一维数组的初始化 , , }; //3个元素 ] = { , , }; //a[3], a[4]自动初始化为0 ] = { }; //全部元素初始化为0 memset(c, , sizeof(c) ...

  9. 手指向上滑动跳转页面的JQ方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Vue.js 2.x笔记:表单绑定(3)

    1. 基础用法 v-model 指令:在表单 input 和 textarea 元素上创建双向数据绑定. 1.1 单行文本(Text) <div id="app"> & ...