# -*- coding: utf-8 -*-

import Image, cStringIO, webbrowser, re, time, math
import urllib, urllib2, cookielib
from HTMLParser import HTMLParser
import sys
reload(sys)
sys.setdefaultencoding('utf8') class WebHelper:
def __init__(self):
self.cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(self.cookie)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener) def open(self, path, req_header = None, pd = None):
try:
req = urllib2.Request(path, pd, req_header)
res = urllib2.urlopen(req)
return res
except urllib2.HTTPError, e:
print e.code
return None def showCookie(self):
for item in self.cookie:
print 'Name = ' + item.name
print 'value = ' + item.value def showResponse(self):
content = self.response.read()
return content def showCaptcha(url, header):
#print url
#file = cStringIO.StringIO(c.open(url, header).read())
file = c.open(url, header).read()
local = open("E:\\py_work\\c.jpg", "wb")
local.write(file)
local.close()
img = Image.open("E:\\py_work\\c.jpg")
img.show() #webbrowser.open_new_tab(url) def syscState():
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'Accept-Language':'en-US,en;q=0.5',
'Accept': '*/*',
'Connection':'keep-alive',
'Host':'bc.qbao.com',
'Referer': 'http://user.qbao.com/syncLoginState.jsp',
}
rlt = c.open("http://bc.qbao.com/account/ucIndex.html", req_header)
print '-------------after sync-------------'
print c.cookie def login(user, passwd): req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en-US,en;q=0.5',
#'Accept-Encoding':'gzip, deflate',
'Connection':'keep-alive',
'Host':'passport.qbao.com',
}
rlt = c.open("https://passport.qbao.com/cas/qianbaoLogin", req_header) print '-------------befor login-------------'
print c.cookie html = rlt.read()
pos = html.find("/cas/captcha.html?pid=");
html = html[pos:]
img_url = html[:html.find('\"')]
showCaptcha("https://passport.qbao.com" + img_url, req_header)
captcha = raw_input("Input captcha !") pos = html.find("name=\"lt\"");
lt = html[pos+17: pos+17+76] pos = html.find("name=\"s_uuid\"");
uuid = html[pos+21: pos+21+36] pos = html.find("name=\'cas_signed\'");
cas_signed = html[pos+25: pos+25+36] login_path = "https://passport.qbao.com/cas/qianbaoLogin" post_data = {
"username" : user,
"password" : passwd,
"j_captcha_response" : captcha,
"lt" : lt,
"_eventId" : "submit",
"s_uuid" : uuid,
"cas_signed" : cas_signed,
} #print post_data
pd = urllib.urlencode(post_data)
rlt = c.open(login_path, req_header, pd)
html = rlt.read()
if html.find("用户登录") >= 0:
print "Login failed!"
else:
print "Login success!"
print html print '-------------After login-------------'
print c.cookie
syscState() def getSharedUrl():
print c.cookie
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en-US,en;q=0.5',
#'Accept-Encoding':'gzip, deflate',
'Connection':'keep-alive',
'Host':'bc.qbao.com',
}
post_data = {
"state" : "",
"pageNum": "",
"pageSize" : "",
}
pd = urllib.urlencode(post_data)
res = c.open("http://bc.qbao.com/listProduct2.html", req_header, pd)
html = res.read()
#print html
patt = re.compile("(?<=\"id\":)\d*")
ids = patt.findall(html)
print html
print '-------------after get product list-------------'
print c.cookie req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'X-Requested-With' : 'XMLHttpRequest',
'Referer' : '',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
#'Accept-Encoding':'gzip, deflate',
'Connection':'keep-alive',
'Host':'bc.qbao.com',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Pragma': 'no-cache',
'Cache-Control' : 'no-cache',
} for id in ids:
time.sleep(1)
prod_url = "http://bc.qbao.com/getShareInfo.html"
pos_data = {
"productId" : id,
"r" : "8.100113228429109"
}
req_header['Referer'] = "http://bc.qbao.com/tuan/" + id + ".html"
print req_header
pd = urllib.urlencode(post_data)
res = c.open(prod_url, req_header, pd)
html = res.read()
print html print '-------------befor get Share info-------------'
print c.cookie def visitUser():
url = 'http://user.qbao.com/usercenter/ucIndex.html'
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
#'Accept-Encoding':'gzip, deflate',
'Connection':'keep-alive',
'Host':'user.qbao.com',
}
res = c.open(url, req_header)
html = res.read()
print html def visitHome():
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
#'Accept-Encoding':'gzip, deflate',
'Connection':'keep-alive',
'Host':'www.qbao.com',
}
res = c.open("http://www.qbao.com/index.html", req_header) c = WebHelper()
visitHome()
login("XXX", "XXX")
#visitUser() getSharedUrl()

qbao的更多相关文章

  1. 区块链社交APP协议分析:Qbao

    - Qbao是什么 - Qbao报文情况 本节我们开始使用Qbao软件,并抓取其报文进行分析. 对APP进行协议分析抓包的一般过程是: 1.打开抓包APP进行抓包: 2.打开APP开始使用: 3.对每 ...

  2. 【浅析】IMU代码

    IMU的代码的引自https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/imumargalgo ...

  3. Jmeter上传附件EXCEL

    1.通过对上传附件接口进行抓包,获取的信息如下: 2.在jmeter脚本中添加http请求,并添加http请求头信息如下: 3.在http请求中添加上传附件的内容如下,由于我上传的是excel,所以M ...

  4. 工作记录:记一次线上ZK掉线问题排查

    目录 问题的发现 zk的情况以及分析 总结 问题的发现 最早问题的发现在于用户提的,用户提出他支付时支付失败,过了一会儿再试就好了,于是翻日志,查询到当时duboo调用出现了下类错误: [TraceI ...

随机推荐

  1. Python学习之高阶函数--嵌套函数、函数装饰器、含参函数装饰器

    玩了一晚上王者,突然觉得该学习,然后大晚上的搞出来这道练习题,凌晨一点写博客(之所以这么晚就赶忙写是因为怕第二天看自己程序都忘了咋写的了),我太难了o(╥﹏╥)o 言归正传,练习题要求:构造类似京东的 ...

  2. 2019.10.28 csp-s模拟测试91 反思总结

    有一场没一场的233 T1: 胡乱分析一下题意,发现和为n的x个正整数,不同的数字种类不会超过√n个.假设这x个数字都不同,最多也就是(x+1)*x/2=n. 所以可以维护现有的size值以及对应的数 ...

  3. Leetcode162. Find Peak Element寻找峰值

    示例 2: 输入: nums = [1,2,1,3,5,6,4] 输出: 1 或 5 解释: 你的函数可以返回索引 1,其峰值元素为 2:   或者返回索引 5, 其峰值元素为 6. 说明: 你的解法 ...

  4. Leetcode114. Flatten Binary Tree to Linked List二叉树展开为链表

    给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 class Solution { publ ...

  5. Perseus-BERT——业内性能极致优化的BERT训练方案

    一,背景——横空出世的BERT全面超越人类 2018年在自然语言处理(NLP)领域最具爆炸性的一朵“蘑菇云”莫过于Google Research提出的BERT(Bidirectional Encode ...

  6. Java中的String,StringBuffer和StringBuilder

    在了解这个问题的时候查了不少资料,最有帮助的是这个博文:http://swiftlet.net/archives/1694,看了一段时间,咀嚼了一段时间,写一个经过自己消化的博文,希望能帮到大家. 首 ...

  7. CentOS6.5在VMware中安装

    链接:https://pan.baidu.com/s/1ggqmHxh 密码:v04l 1.启动VMware的画面 2.点击File--->New Virtual Machine 创建一台新虚拟 ...

  8. js实现翻转一个字符串

    字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理.在这里介绍几种翻转字符串的方法. (1)使用字符串函数 //使用数组翻转函数 function reverseString ...

  9. js中保存成图片并下载

    1.保存canvas中绘制的内容为图片 HTML代码: <canvas id="canvas" width="400" height="400& ...

  10. systemd管理nginx

    首先安装nginx,此处不做赘述. 保存以下内容到/lib/systemd/system/nginx.service文件. [Unit] Description=The NGINX HTTP and ...