# 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. 创建一个Windows服务程序与实现定时器效果

    1.创建一个Windows服务程序 一.   新建Window服务项目 二.   添加安装程序 三.   配置服务属性 四.   编写定时器代码 publicpartialclassService1 ...

  2. Mysql语句删除主键的自增

    ALTER TABLE 表名MODIFY COLUMN 字段名 int(2) NOT NULL FIRST ;

  3. WPF中查看PDF文件之MoonPdfLib类库

    最近研究了两种PDF文件查看器,MoonPdfLib或者AdobeReader. 今天先说第一种,在网上扒到的很好的WPF中用MoonPdf类库来展示PDF文件. 在Sourceforge上下载到Mo ...

  4. 使用RAP2和Mock.JS实现Web API接口的数据模拟和测试

    最近一直在思考如何对Web API的其接口数据进行独立开发的问题,随着Web API的越来越广泛应用,很多开发也要求前端后端分离,例如统一的Web API接口后,Winform团队.Web前端团队.微 ...

  5. Mysql数据库引擎介绍--转载

    引用博文链接:https:/www.cnblogs.com/zhangjinghe/p/7599988.html MYSQL数据库引擎区别详解 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安 ...

  6. javaweb项目环境搭建,jdk,tomcat,myeclipse,sqlserver安装 配置

    myeclipse是一个java的IDE,myeclipse中虽然内置了JDK和Tomacat服务器,但可以不使用,通过进行相应的配置,使用自行安装的JDK和Tomcat.安装Tomcat之前,一定要 ...

  7. 360大牛:全面解读PHP面试

    让大家了解基本面试流程和面试的核心要求以及意义是什么并理解PHP面试考点主要以基础为核心,说明PHP面试考察范围. 有需要联系:QQ:1844912514

  8. Spring AOP 前置通知

    我们使用AspectJ对Spring进行AOP操作,有两种方式,注解和XML配置方式,先在pom.xml中声明jar包 <dependencies> <dependency> ...

  9. Spring中@Transactional用法

    作者:bladestone 来源:CSDN 原文:https://blog.csdn.net/blueheart20/article/details/44654007 版权声明:本文为博主原创文章,转 ...

  10. JDK 新特性

    Jdk8新特性 一:接口默认方法和静态方法: 我们可以在接口中定义默认方法,使用default关键字,并提供默认的实现.所有实现这个接口的类都会接受默认方法的实现,除非子类提供的自己的实现. 我们还可 ...