導航:首頁 > 軟體資訊 > 怎麼爬取app的登錄介面

怎麼爬取app的登錄介面

發布時間:2023-01-02 00:55:02

① 安卓手機app怎麼實現qq第三方登錄介面

申請APPID

進入QQ互聯的官網

在管理中心中創建移動應用。

導入Jar包

將下載得到的Jar包導入工程,並在androidManifest.xml文件中進行注冊。

<activity
android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent100546930" />
</intent-filter>
</activity>


其中,<data android:scheme="tencent100546930" />中的數字需要替換成自己申請得到的APPID。

創建登錄介面

所有的SDK介面調用,都會傳入一個回調,用以接收SDK返回的調用結果。回調的主要介面有兩種:

(1)IUiListener:調用SDK已經封裝好的介面時,例如:登錄、快速支付登錄、應用分享、應用邀請等介面。

(2)IRequestListener:使用requestAsync、request等通用方法調用sdk未封裝的介面時,例如上傳圖片、查看相冊等。

在這里創建IUiListener介面實現相應的登錄授權操作:

private void onClickLogin() {
if (!mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() {
/** 授權失敗的回調*/
@Override
public void onError(UiError arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授權失敗", 1000).show();
Message msg = new Message();
msg.arg1 = 2;
handler.sendMessage(msg);
}
/** 授權成功的回調*/
@Override
public void onComplete(JSONObject arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授權成功", 1000).show();
Message msg = new Message();
msg.what = 2;
msg.arg1 = 1;
msg.obj = arg0;
handler.sendMessage(msg);
}
/** 取消授權的回調*/
@Override
public void onCancel() {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "取消授權", 1000).show();
Message msg = new Message();
msg.arg1 = 3;
handler.sendMessage(msg);
}
};
mTencent.login(this, SCOPE, listener);
} else {
mTencent.logout(this);
}
}


其中,mTencent為QQSDK主要實現類Tencent類的實例。

// Tencent類是SDK的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。
// 其中APP_ID是分配給第三方應用的appid,類型為String。
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());


將handler進行實例化

handler = new Handler(this);


並將類實現Callback介面,即可對上述類進行Handler的處理操作。

@Override
public boolean handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.arg1) {
case 1: { // 成功
JSONObject object = (JSONObject) msg.obj;
try {
openid = object.getString("openid").toString();
sBuilder.append("openid為:"+openid+" ");
access_token = object.getString("access_token").toString();
url = url + "?access_token="+access_token+"&oauth_consumer_key="+APP_ID+
"&openid="+openid+"&format=json";
new MyUrlThread(url.toString(), 2,sHandler).start();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
case 2: { // 失敗
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
case 3: { // 取消
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
}
return false;
}


如果授權成功,即可得到返回的Openid。

從而,可以根據Openid調用騰訊所提供的官方介面,實現需要的操作。

② 需要爬取一個網站內容,需登錄和驗證碼,怎麼破

在採集網站的過程中,部分數據價值較高的網站,會限制訪客的訪問行為。這種時候建議通過登錄的方式,獲取目標網站的cookie,然後再使用cookie配合代理IP進行數據採集分析。
1 使用表單登陸
這種情況屬於post請求,即先向伺服器發送表單數據,伺服器再將返回的cookie存入本地。

2 使用cookie登陸
使用cookie登陸,伺服器會認為你是一個已登陸的用戶,所以就會返回給你一個已登陸的內容。因此,需要驗證碼的情況可以使用帶驗證碼登陸的cookie解決。

此外目前市場上的一些採集軟體也是支持登錄和驗證碼。

③ 如何進行手機APP的數據爬取

python爬蟲手機的步驟:

1. 下載fiddler抓包工具

2. 設置fiddler

這里有兩點需要說明一下。

設置允許抓取HTTPS信息包

操作很簡單,打開下載好的fiddler,找到 Tools -> Options,然後再HTTPS的工具欄下勾選Decrpt HTTPS traffic,在新彈出的選項欄下勾選Ignore server certificate errors。

設置允許外部設備發送HTTP/HTTPS到fiddler

相同的,在Connections選項欄下勾選Allow remote computers to connect,並記住上面的埠號8888,後面會使用到。

好了,需要的fiddler設置就配置完成了。

3. 設置手機端

設置手機端之前,我們需要記住一點:電腦和手機需要在同一個網路下進行操作。

可以使用wifi或者手機熱點等來完成。

假如你已經讓電腦和手機處於同一個網路下了,這時候我們需要知道此網路的ip地址,可以在命令行輸入ipconfig簡單的獲得,如圖。

好了,下面我們開始手機端的設置。

手機APP的抓取操作對於Android和Apple系統都可用,博主使用的蘋果系統,在此以蘋果系統為例。

進入到手機wifi的設置界面,選擇當前連接網路的更多信息,在蘋果中是一個嘆號。然後在最下面你會看到HTTP代理的選項,點擊進入。

進入後,填寫上面記住的ip地址和埠號,確定保存。

4. 下載fiddler安全證書

在手機上打開瀏覽器輸入一個上面ip地址和埠號組成的url:http://192.168.43.38:8888,然後點擊FiddlerRoot certificate下載fiddler證書。

以上就簡單完成了所有的操作,最後我們測試一下是否好用。

5. 手機端測試

就以知乎APP為例,在手機上打開 知乎APP。下面是電腦上fiddler的抓包結果。

結果沒有問題,抓到信息包。然後就可以使用我們分析網頁的方法來進行後續的操作了。

④ python 怎麼爬取app端數據

可以,但是不提倡這種行為 1,在手機上設置代理,代理到你的電腦上 2,再在電腦上用tcpmp或者其他圖形化的抓包工具獲得數據包,分析這些數據包找到你要的數據 3,根據前兩步的結果,寫代碼模擬app的操作獲得你需要的數據

⑤ 淘寶APP x-sign

爬蟲淘寶數據 都要有sign驗證,app端是 x-sign。

簡單來說pc端的sign驗證藏在js裡面 用token+data+t+appkey 做md5 就可以獲取,本文主要說的是 app端的,這里就不細說。

在app端有了x-sign基本上所有數據都可以爬取到。逆向xsign演算法網上也不少帖子可以查找到, 有興趣學習可以找逆向資料學習。

下面是成品圖片,做法是先搞定xsign演算法,處理成介面返回簽名需要的欄位

{

wua: 「FKr2_++5mJWcDuPV3eItUNl+u18ypOHG5eu/q3jEJ+IfCUOfb2qjS/+PNJzCRKeGhLvt7W5udQp/HdB7wld16IzdgbLat+2MEcYJ3+1E+W8Z7j6jo/+RFv95KQsJOSbH7J6+m/+TXFHe54+tKzHlk4yXhesLElXTdFy0MbTeiDr3/17R8KVb9lUatf5ITpT2weFg==」,

x-mini-wua: 「HHnB_+/Qzcs70PR6plS3AWwnQFyvRfDRbH+/7W/」,

x-sgext: 「JAG7pXI5ds78b0CE23FM7Q==」,

x-sign: 「azYBCM002xAALfdUCwyFS/3t+5vyaodd/vWOaADDOHStGiPqD2lE+dFwxAqi0739gh+」,

x-t: 「1602081910」,

x-umt: 「pH1Lf4NLOkJi0zV1WOSqB1QnScotB+He」

}

然後抓包要爬取的頁面,看請求參數,把請求參數提交到做好的xsign介面返回簽名。然後請求淘寶數據介面 獲取數據。

⑥ MUI做APP怎麼調用介面

用mui.Ajax(mui.post,mui.get)來調用介面,然後動態的MUI的控制項賦值
varurlAjax="http://demo.net";
mui.ajax(urlAjax+'/GetHistoryList',{
data:{
psId:psId
},
dataType:'json',//伺服器返回json格式數據
type:'post',//HTTP請求類型
async:false,
timeout:10000,//超時時間設置為10秒;
success:function(json){
//伺服器返回響應,根據響應結果,分析是否登錄成功;

},
error:function(xhr,type,errorThrown){
//異常處理;
mui.alert('網路延時,請重新載入!','系統提示');
}
});

⑦ 怎麼爬取APP裡面的信息


  1. 數據菜單獲取外部數據

  2. 自網站

  3. 輸入網站的地址

  4. 導入

  5. 屬性設置刷新時間


⑧ Python 爬取https的登錄界面,怎麼爬取成功,謝謝

之前寫的一直沒成功,原因是用的不是HTTPS相關的函數。這次仔細研究了一下,有幾個需要注意的點,一個是POST模擬登陸的時候,header中的cookie值,不同的網站應該會有不同的要求;另一個是GET頁面的時候,是需要加上POST得到的response中的set-cookie的。這樣才能利用登陸的成功。

寫完POST和GET頁面後,順便寫了個簡單的命令行實現。

importhttplib,urllib
importurllib2
importcookielib
importsys

file_text="build_change.txt"
resultTable=dict()
host='buuuuuuu.knight.com'

defLogin(username,password,csrf=''):
url='/login/'
values={
'username':username,
'password':password,
'next':'',
'csrfmiddlewaretoken':csrf,
}

headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Content-Type':'application/x-www-form-urlencoded',
'Connection':'keep-alive',
'Cookie':'csrftoken=%s'%csrf,
'Referer':'https://buuuuuuu.knight.com/login/',
'Origin':'https://buuuuuuu.knight.com',
'Content-Type':'application/x-www-form-urlencoded',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
}
values=urllib.urlencode(values)
conn=httplib.HTTPSConnection(host,443)
conn.request("POST",url,values,headers)
response=conn.getresponse()
print'Login:',response.status,response.reason
'''
hdata=response.getheaders()
foriinxrange(len(hdata)):
forjinxrange(len(hdata[i])):
printhdata[i][j],
print
'''
returnresponse.getheader("set-cookie")


defGetHtml(_url,cookie):
get_headers={
'Host':'xxxxx.knight.com',
'Connection':'keep-alive',
'Cache-Control':'max-age=0',
'Cookie':cookie,
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',
}
conn=httplib.HTTPSConnection(host)
conn.request("GET",_url,None,get_headers)
res2=conn.getresponse()
print"Get%s:"%_url,res2.status,res2.reason
'''
hdata1=res2.getheaders()
foriinxrange(len(hdata1)):
forjinxrange(len(hdata1[i])):
printhdata1[i][j],
print
'''
data=res2.read()
fp=open("build_change.txt","w")
fp.write(data)
fp.close()


defParseHtml():
fp=open(file_text,"r")
content=fp.readline()
_pos=0
whilecontent:
ifcontent.find("class="change-body"")>=0:
topic=content.split(">")
resultTable[_pos]=topic[1]
whilecontent:
content=fp.readline()
resultTable[_pos]=resultTable[_pos]+content
ifcontent.find("</div>")>=0:
_pos=_pos+1
break
content=fp.readline()
fp.close()
print"Parsehtmlsuccess."


defGenerateResultTxt():
f=open("build_change_result.txt","w")
forminresultTable.keys():
f.write("------------------------------------------------------------------------------------------- ")
f.write(resultTable[m])
f.close()
print"Generateresultsuccess:build_change_result.txt."
defHelp():
print'-h:help'
print'-u:username(must)'
print'-p:password(must)'
print'-c:csrftoken(optional)'
print'-s:sandboxbuildid(must)'
print'Forexample:'
print'[1]pythonBuildChange.py-h'
print'[2]pythonBuildChang.py-uu-pp-ss1s2'
print'[3]pythonBuildChang.py-uu-pp-cc-ss1s2'


defParseParam(com):
length=len(com)
username=""
password=""
csrf=""
sid1=""
sid2=""
iflength==2orlength==8orlength==10:
ifcom[1]=='-h':
Help()
foriinrange(1,length):
ifcom[i]=='-u'andi<(length-1):
username=com[i+1]
i+=1
elifcom[i]=='-p'andi<(length-1):
password=com[i+1]
i+=1
elifcom[i]=='-c'andi<(length-1):
csrf=com[i+1]
i+=1
elifcom[i]=='-s'andi<(length-2):
sid1=com[i+1]
sid2=com[i+2]
i+=2
ifusername==""orpassword==""orsid1==""orsid2=="":
print'[Error]Parametererror!'
print'[Error]Youcanuse"pythonBuildChange.py-h"toseehowcanusethisscript.'
else:
ifcsrf=="":
cookie=Login(username,password)
else:
cookie=Login(username,password,csrf)
_url="//changelog//between//%s//and//%s/"%(sid1,sid2)
GetHtml(_url,cookie)
ParseHtml()
GenerateResultTxt()

#C:Python27python.exeC:UsersknightDesktopuildBuildChange.py-uxux-pKKKKKKKK-s18594091858525

if__name__=="__main__":
ParseParam(sys.argv)

⑨ python 爬取帶驗證碼需要登陸後的網站

這個有點繁瑣,告訴你,你也可能搞不定
首先請求網頁,然後用你的未登錄cookies去二次請求驗證碼,用byte類型保存在內存中,用pillow模塊展示出來,你在手動輸入,主程序這邊用input阻塞,等你輸入完,主程序向登錄介面提交賬號密碼和驗證碼,然後後面就正常爬取,這是非selenium的模擬登錄,這邊糾正一點,凡是登錄,不管你用什麼模塊,都屬於模擬登錄,並非selenium登錄方式才叫模擬登錄,

閱讀全文

與怎麼爬取app的登錄介面相關的資料

熱點內容
黃豆私人加密 瀏覽:190
java分鍾轉換小時 瀏覽:245
易語言伺服器如何提高 瀏覽:591
網站主機伺服器地址查看 瀏覽:859
演算法學不會能當程序員嗎 瀏覽:119
程序員技術交流研究 瀏覽:814
javaresponse文件 瀏覽:734
linuxrar壓縮文件夾 瀏覽:218
魅藍手機連接不上伺服器怎麼回事 瀏覽:379
工行app怎麼改已綁定銀行卡 瀏覽:533
oppo晶元程序員 瀏覽:602
oppok3應用怎麼加密 瀏覽:327
電腦軟盤怎麼加密碼 瀏覽:815
伺服器光交換機有什麼用 瀏覽:708
app上怎麼拍蛙小俠 瀏覽:217
志高聊天app怎麼下載 瀏覽:635
郵政app怎麼不能掃付款碼 瀏覽:559
筆記本電腦雙理由配置命令 瀏覽:65
拿著文件夾怎麼畫 瀏覽:877
博瑞發動機壓縮比 瀏覽:732