python脚本如何模拟接口实现批量用户开通(代码)
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')
0条评论