python脚本如何模拟接口实现批量用户开通(代码)

python脚本如何模拟接口实现批量用户开通(代码),第1张

1这要看个家APP具体实现登录逻辑

2大部分登录方法都是post方法,就用urllib包足以

3模拟一个请求头,因为大部分公司都会过滤掉非真实用户请求

4拦截抓包,看他们家的协议组成,推荐用

Charles

5如果他们做了通信签名,反编译他们的apk包,寻找对应的加密密钥。如果做了混淆,我暂时没做过这块破解,抱歉。

以登陆百度为例子,如下:

import urllib,urllib2,httplib,cookielib

def auto_login_hi(url,name,pwd):

url_hi="http://passportbaiducom/login"

#设置cookie

cookie=cookielibCookieJar()

cj=urllib2HTTPCookieProcessor(cookie)

#设置登录参数

postdata=urlliburlencode({'username':name,'password':pwd})

#生成请求

request=urllib2Request(url_hi,postdata)

#登录百度

opener=urllib2build_opener(request,cj)

f=openeropen(request)

print f

#打开百度HI空间页面

hi_html=openeropen(url)

return hi_html

if __name__=='__main__':

name='name'

password='password'

url='yoururl'#例如:url='http://hibaiducom/cdkey51'

h=auto_login_hi(url,name,password)

print hread()#h里面的内容便是登录后的页面内容

本篇文章给大家带来的内容是关于python脚本如何模拟接口实现批量用户开通(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、目的

通过模拟接口方法,实现批量用户开通

2、分析

A、接口含body和head部分,其中body中的某些变量为必填字段,包含用户的信息。

B、用户信息清单可以整理成ott_after_check_device文件。

C、将ott_after_check_device文件转换成列表数据类型,将其用户信息对应替换到bodyxml文件中。

3、脚本实现

#!/usr/bin/env python

# -- coding: utf-8 --

import requests

from requests_toolbeltmultipartencoder import MultipartEncoder

def get_txt_after_check_device():

ott_after_check_device = '\ott_after_check_devicetxt'

f = open(ott_after_check_device)

lines = freadlines()

all_list_device = []

for line in lines:

line = linereplace("

", '')

list_device = linesplit(',')

all_list_deviceappend(list_device)

return all_list_device

def ott_boss(list_device):

sleep_time = 0001

# print len(list_device)

for i in range(len(list_device)):

print u'新开户数 :', i + 1

timesleep(sleep_time)

acc_num = list_device[i][0]

stb_id = list_device[i][1]

print 'STBID : ', stb_id

account = list_device[i][2]

url = 'http://102214133:6600/oss/rest/mango/bossManagement/syncOrder'

mul = MultipartEncoder(

fields={

'xmlhead': '<xml version="10" encoding="UTF-8"> <InterBOSS>'

'<Version>0100</Version>'

'<TestFlag>0</TestFlag>'

'<BIPType>'

'<BIPCode>IPTVB412</BIPCode>'

'<ActivityCode>T2101057</ActivityCode>'

'<ActionCode>0</ActionCode>'

'</BIPType>'

'<RoutingInfo>'

'<OrigDomain>BOSS</OrigDomain>'

'<RouteType>00</RouteType>'

'<Routing>'

'<HomeDomain>OTT</HomeDomain>'

'<RouteValue>210</RouteValue>'

'</Routing>'

'</RoutingInfo>'

'<TransInfo>'

'<SessionID>2018092517323481311686</SessionID>'

'<TransIDO>2018092517323416388122</TransIDO>'

'<TransIDOTime>20180211173234</TransIDOTime>'

'</TransInfo> </InterBOSS>',

'xmlbody': '<xml version="10" encoding="UTF-8"> <InterBOSS> <SvcCont><![CDATA[<xml '

'version="10" encoding="UTF-8"> <OrdSynReq>'

'<PkgSeq>73120180111000007</PkgSeq>'

'<RecNum>1</RecNum>'

'<UD1>'

'<IDType>01</IDType>'

'<IDV>%s</IDV>'

'<Brand>09</Brand>'

'<Opr>06</Opr>'

'<OprT>20180925171922</OprT>'

'<BizType>52</BizType>'

'<Seq>8121</Seq>'

'<BroadbandID>738815023717</BroadbandID>'

'<ZipCode></ZipCode>'

'<Address></Address>'

'<UserName></UserName>'

'<UserSex></UserSex>'

'<IDCardType></IDCardType>'

'<IDCardNum></IDCardNum>'

'<AreaCode>K381</AreaCode>'

'<GroupID></GroupID>'

'<POCont>'

'<ActType>1</ActType>'

'<StbID>%s</StbID>'

'<Account>%s</Account>'

'<Password>111111</Password>'

'<ChrgType>2</ChrgType>'

'<EffetiTime>20180925171922</EffetiTime>'

'<Channel>08</Channel>'

'<SPID>mango</SPID>'

'<BizCode>defaultBasicProduct</BizCode>'

'<BizKind>01</BizKind>'

'</POCont>'

'</UD1> </OrdSynReq> '

']]></SvcCont> </InterBOSS>' % (acc_num, stb_id, account)

}

)

header = {'Content-Type': mulcontent_type}

body = mul

response = requestspost(url, data=body, headers=header)

print responsecontent

print responsestatus_code

if __name__ == '__main__':

ott_boss(get_txt_after_check_device())

那么你在用爬虫爬取的时候获得的页面究竟是哪个呢?

肯定是第二个,不可能说你不用登录就可以访问到一个用户自己的主页信息,那么是什么让同一个URL在爬虫访问时出现不同内容的情况呢?

在第一篇中我们提到了一个概念,cookie,因为HTTP是无状态的,所以对方服务器并不知道这次请求到底来自于谁,就好像突然你收到了一封信,上面让你给他寄一些东西,但是信上却没有他的****。

在HTTP中也是如此,我们普通的请求都类似于匿名信,而cookie的出现,就是让这封信上盖上了你自己的名字。

在请求时附带上你的cookie,服务器放就会知道这次请求来自于谁,然后你点击个人信息页,服务器就知道是要返回这个cookie对应的用户的信息页了。

在谷歌浏览器中,你可以在控制台Application里面找到当前网站的所有cookie键值对。一般来说用于确认你个人信息的只有一个键值对,但是你也可以把所有的都用上,并不能保证对方服务器是不是对某些键值对也进行检查了。

很多网站在你没有登录的情况下并不会给过多的数据让你看,所以你的爬虫需要进行一次模拟登录。

模拟登录需要从一个网站的登录界面开始,因为我们要在这里用爬虫发送post请求附带账号密码来登录对方网站。

参考这个可以了,http://wwwbubukocom/infodetail-699326html

#以post的方法访问登陆页面,访问之后cookieJar会自定保存cookie

openeropen(login_page,data)

#以带cookie的方式访问页面,这样跳转主页就可以了

op=openeropen(url)

附上部分代码如下:

def login(self,login_url):

data = {

'email': selfemail,

'password': selfpasswd

}

post_data = urlliburlencode(data)

req = urllib2Request(login_url,post_data, selfheaders)

response = selfopeneropen(req)

content = responseread()()

pagesoup = BeautifulSoup(content,fromEncoding = 'utf-8')

return pagesoup

def recent_visit(self,soup):

title = souphtmlheadtitle

print titlerenderContents()strip()

app_link_url = soupfind('li',{'class':'app-nav-item app-homepage'})a['href']

print app_link_url #人人网主页

app_link_op = selfopeneropen(app_link_url)#跳转主页

app_link_soup = BeautifulSoup(app_link_opread(),fromEncoding = 'utf-8')

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » python脚本如何模拟接口实现批量用户开通(代码)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情