導航:首頁 > 編程語言 > python微信實戰

python微信實戰

發布時間:2023-12-12 11:52:38

㈠ 如何使用python開發微信小程序

1、產品定位及功能介紹,微信小程序是一種全新的連接用戶與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。 2、如果要開發微信小程序,建議找微信認證第三方開發商開發相關應用,比如贏在移動、正品科技等。

㈡ 如何用 Python 爬自己的微信朋友

首先,在終端安裝一下itchat包。
pip install itchat
安裝完成後導入包,再登陸自己的微信。過程中會生產一個登陸二維碼,掃碼之後即可登陸。登陸成功後,把自己好友的相關信息爬下來。
import itchat
itchat.login()
#爬取自己好友相關信息, 返回一個json文件
friends = itchat.get_friends(update=True)[0:]
有了上面的friends數據,我們就可以來做分析啦。
1. 自己微信好友的男女比例
仔細觀察了一下返回的數據結構,發現」性別「是存放在一個字典裡面的,key是」Sex「,男性值為1,女性為2,其他是不明性別的(就是沒有填的)。可以寫個循環獲取想要的性別數據,得到自己微信好友的性別比例。
#初始化計數器
male = female = other = 0
#friends[0]是自己的信息,所以要從friends[1]開始
for i in friends[1:]:
sex = i["Sex"]
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other +=1
#計算朋友總數
total = len(friends[1:])
#列印出自己的好友性別比例
print("男性好友: %.2f%%" % (float(male)/total*100) + "n" +
"女性好友: %.2f%%" % (float(female) / total * 100) + "n" +
"不明性別好友: %.2f%%" %(float(other) / total * 100))
列印的結果為:
男性好友: 37.65%
女性好友: 59.23%
不明性別好友: 3.12%

㈢ 如何用Python進行微信二次開發

創建步驟:

1.申請免費且支持python的伺服器,新浪雲sae,新建SAE應用之後,有兩種代碼提交方式,建議使用SVN(因為git支持代碼提交,但不支持環境配置);

2.將對應版本的信息復制到微信開發-基本配置-URL,提交顯示錯誤,因為還沒有寫代碼,可以先用web框webpy架寫個網頁;

查看webpy使用說明:http://www.webpy.org/install.zh-cn

查看ase進行python開發入門說明:http://www.sinacloud.com/doc/sae/python/index.html

3.配置信息,告訴新浪雲需要什麼運行環境。點擊代碼管理-編輯代碼,將用到的第三方庫信息寫入config.yaml,注意破折號,冒號後面空格!!

libraries:
-name:webpy
version:"0.36"

-name:lxml
version:"2.3.4"

在index.wsgi文件中寫入python啟動程序
新建文件,寫入接受微信get請求驗證的Python文件

4.在index.wgsi中寫入以下信息:

#coding=utf-8

importos
importsae
importweb#配置web的路由
urls=(
'/weixin','WeixinInterface'
)
#拼接路徑
app_root=os.path.dirname(__file__)
templates_root=os.path.join(app_root,'templates')
#渲染模版
render=web.template.render(templates_root)

#啟動app
app=web.application(urls,globals()).wsgifunc()
application=sae.create_wsgi_app(app)

5.在自己編寫的Python文件中寫入微信驗證和接受信息的程序

#coding=utf-8

importhashlib
importweb
importtime
importos
fromlxmlimportetree

#hashlib用於加密,md5,hash等
#lxml用來解析xml文件

classWeixinInterface(object):
#初始化
def__init__(self):
#拼接路徑
self.app_root=os.path.dirname(__file__)
self.templates_root=os.path.join(self.app_root,'templates')
#渲染模版
self.render=web.template.render(self.templates_root)

#使用get方法,接收微信的get請求,看開發者文檔的說明
#http://mp.weixin.qq.com/wiki/8/.html
defGET(self):
data=web.input()
signature=data.signature#微信加密簽名
timestamp=data.timestamp#時間戳
nonce=data.nonce#隨機數
echostr=data.echostr#隨即字元串
token='zq90857'#自己設置的token

#將token、timestamp、nonce三個參數進行字典序排序
list=[token,timestamp,nonce]
list.sort()
#將三個參數字元串拼接成一個字元串進行sha1加密
sha1=hashlib.sha1()
map(sha1.update,list)
temStr=sha1.hexdigest()#加密
#判斷
iftemStr==signature:
returnechostr

6.假設接收文字信息,按照開發者文檔的要求,配置template文件夾下reply_text.xml文件

$defwith(toUser,fromUser,createtime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createtime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[$content]]></Content>
</xml>

㈣ 如何使用Python開發微信小程序

小程序自2017年1月9日上線以來,隨著晌敏賀一年多的發展,今年可以說是小程序流量紅利爆發的一年。那麼小拿塵程序的爆發除了基於微信11億用戶基礎上,還有哪些優勢特點讓其自身擁有爆點呢?完全可以試試宴派國內的雲豐網的商城四合一,包含小程序商城,模板設計,比有贊微盟還好用。

㈤ Python自動搶紅包,超詳細教程,再也不會錯過微信紅包了

提到搶紅包,就不得不提Xposed框架,它簡直是個搶紅包的神器,但使用Xposed框架有一個前提條件:手機需要root,對於蘋果手機的話就需要越獄了。現在的手機想要root或越獄並不容易,同時這會對手機安全性帶來一些風險,搶紅包本身只是個 娛樂 活動,這樣做就得不償失了。

為了自動搶紅包,python能幫我們實現嗎?

答案是肯定的,本文就帶大家一起 探索 下用Python如何實現自動搶紅包。

操作系統:Windows

Python版本:3.7.2

手機系統:Android

這里我們的需求是實現自動搶紅包。首先要打開微信,進入到指定的群聊,識別微信紅包、執行搶紅包的動作。這就是關鍵的步驟,簡單清晰。

因為電腦版本的微信沒有搶紅包的功能,我們只能手機微信,那麼就需要把手機連上電腦,通過電腦控制手機來自動搶,那就需要確保「 adb 命令可正常執行。

識別微信中的消息,是紅包還是普通的信息,這里我們通過聊天消息的元素標識來判斷。這里我們藉助了「 Airtest IDE 」工具來實現。

要正常使用「adb」需要打開USB調試,設置項通常出現在手機系統設置中的[開發人員選項]裡面。

在手機上打開USB調試後,接下來我們通過Airttest IDE驗證 adb 運行是否正常。


開始之前先,先解釋下airttest相關概念:

Airtest IDE 的下載地址:


下載之後,解壓打開就可以使用,Airtest IDE的界面如下:

使用AirtestIDE對Android應用進行自動化操作,第一步就需要連接Android設備。


若連接遇到問題,請參考Airtest的官方教程:Android真機連接

打開微信,在最左側的Tab頁,微信消息列表,我們需要從這里選擇指定的群聊來搶紅包。


在AirtestIDE中,我們可以通過暫停功能,凍結當前的UI樹形結構來精確地檢視UI控制項,我們先來分析下這個頁面中元素標識。

聊天頁面中整體的群聊消息的元素標識 com.tencent.mm:id/d1v

聊天頁面中單個群聊消息的元素標識 com.tencent.mm:id/b6e

接下來進入我們准備要搶紅包的群聊中,識別出紅包並執行搶紅包的動作。

我們先來看看紅包的標識:

紅包標識的示例1 com.tencent.mm:id/aql

紅包標識的示例2 com.tencent.mm:id/aql


點擊紅包,記錄下彈出的大紅包頁面中「開」的元素標識


大紅包頁面中」開「的標識 com.tencent.mm:id/d02

這里我們需要判斷是紅包是否有效,比如已被領完或是已被自己領取的紅包就是無效的,我們在執行時可以跳過這些。

已領取紅包的標識 com.tencent.mm:id/apk

已被領完紅包的標識 com.tencent.mm:id/apk

我們用的各元素的標識都已取到,接下來就是組織我們的代碼。

首先得打開微信,利用Airtest啟動app應用,只須一行代碼即可搞定,如下

獲取當前頁面中所有所有群聊的名稱

選擇並進入指定的群聊

遍歷消息並查找紅包

在LuckyMoney中定義搶紅包的動作

若我們在一台電腦上並不想安裝Airtest IDE,還能執行這個腳本嗎?


當然可以,只需要安裝好「 pocoui 」這個第三方庫就可以「拋棄」它了!


利用 AirtestIDE 創建一個項目時,設備類型選中 Android,就會在編碼區生成一段初始化的代碼。

我們自己編寫的Python代碼中也需要加上這段初始化的代碼。

再次強調,在執行腳本時要確保手機連上電腦,並確保「adb」命令正常運行。

對Airtest有興趣的小夥伴,可以參考airtest官方教程:AirtestIDE官方文檔


評論區評論: python搶紅包 ,獲取本文所涉及的完整代碼

㈥ python怎麼爬取某個人的微信朋友圈的信息

主要思路
從UI獲取文本信息是最為簡單的方法,於是應該優先逆向UI代碼部分。
逆向微信apk
首先解包微信apk,用dex2jar反編譯classes.dex,然後用JD-GUI查看jar源碼。當然,能看到的源碼都是經過高度混淆的。但是,繼承自安卓重要組件(如Activity、Service等)的類名無法被混淆,於是還是能從中看到點東西。
首先定位到微信APP package。我們知道這個是 com.tencent.mm。
在 com.tencent.mm
中,我們找到一個 ui
包,有點意思。
展開 com.tencent.mm.ui
,發現多個未被混淆的類,其中發現 MMBaseActivity直接繼承自 Activity
, MMFragmentActivity
繼承自 ActionBarActivity
, MMActivity
繼承自 MMFragmentActivity
,並且 MMActivity
是微信中大多數Activity的父類:
public class MMFragmentActivity
extends ActionBarActivity
implements SwipeBackLayout.a, b.a {
...
}
public abstract class MMActivity
extends MMFragmentActivity {
...
}
public class MMBaseActivity
extends Activity {
...
}
現在需要找出朋友圈的Activity,為此要用Xposed hook MMActivity。
創建一個Xposed模塊
參考 [TUTORIAL]Xposed mole devlopment,創建一個Xposed項目。
簡單Xposed模塊的基本思想是:hook某個APP中的某個方法,從而達到讀寫數據的目的。
小編嘗試hook com.tencent.mm.ui.MMActivity.setContentView這個方法,並列印出這個Activity下的全部TextView內容。那麼首先需要遍歷這個Activity下的所有TextView,遍歷ViewGroup的方法參考了SO的以下代碼:
private void getAllTextViews(final View v) {if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {View child = vg.getChildAt(i);
getAllTextViews(child);
}
} else if (v instanceof TextView ) {
dealWithTextView((TextView)v); //dealWithTextView(TextView tv)方法:列印TextView中的顯示文本}
}
Hook MMActivity.setContentView
的關鍵代碼如下:
findAndHookMethod("com.tencent.mm.ui.MMActivity", lpparam.classLoader, "setContentView", View.class, new XC_MethodHook() {...
});
在findAndHookMethod方法中,第一個參數為完整類名,第三個參數為需要hook的方法名,其後若干個參數分別對應該方法的各形參類型。在這里, Activity.setContentView(View view)方法只有一個類型為 View
的形參,因此傳入一個 View.class

現在,期望的結果是運行時可以從Log中讀取到每個Activity中的所有的TextView的顯示內容。
但是,因為View中的數據並不一定在 setContentView()時就載入完畢,因此小編的實驗結果是,log中啥都沒有。
意外的收獲
當切換到朋友圈頁面時,Xposed模塊報了一個異常,異常源從 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI這個類捕捉到。從類名上看,這個很有可能是朋友圈首頁的UI類。展開這個類,發現更多有趣的東西:
這個類下有個子類 a
(被混淆過的類名),該子類下有個名為 gyO的 ListView
類的實例。我們知道, ListView
是顯示列表類的UI組件,有可能就是用來展示朋友圈的列表。
順藤摸瓜
那麼,我們先要獲得一個 SnsTimeLineUI.a.gyO的實例。但是在這之前,要先獲得一個 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a的實例。繼續搜索,發現 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI有一個名為 gLZ
的 SnsTimeLineUI.a
實例,那麼我們先取得這個實例。
經過測試, com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a(boolean, boolean, String, boolean)這個方法在每次初始化微信界面的時候都會被調用。因此我們將hook這個方法,並從中取得 gLZ。
findAndHookMethod("com.tencent.mm.plugin.sns.ui.SnsTimeLineUI", lpparam.classLoader, "a", boolean.class, boolean.class, String.class, boolean.class, new XC_MethodHook() {@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("Hooked. ");
Object currentObject = param.thisObject;
for (Field field : currentObject.getClass().getDeclaredFields()) { //遍歷類成員field.setAccessible(true);
Object value = field.get(currentObject);
if (field.getName().equals("gLZ")) {
XposedBridge.log("Child A found.");
childA = value;
//這里獲得了gLZ
...
}
}
}
});
現在取得了 SnsTimeLineUI.a
的一個實例 gLZ
,需要取得這個類下的 ListView
類型的 gyO
屬性。
private void dealWithA() throws Throwable{if (childA == null) {
return;
}
for (Field field : childA.getClass().getDeclaredFields()) { //遍歷屬性field.setAccessible(true);
Object value = field.get(childA);
if (field.getName().equals("gyO")) { //取得了gyOViewGroup vg = (ListView)value;
for (int i = 0; i < vg.getChildCount(); i++) { //遍歷這個ListView的每一個子View...
View child = vg.getChildAt(i);
getAllTextViews(child); //這里調用上文的getAllTextViews()方法,每一個子View里的所有TextView的文本...
}
}
}
}
現在已經可以將朋友圈頁面中的全部文字信息列印出來了。我們需要根據TextView的子類名判斷這些文字是朋友圈內容、好友昵稱、點贊或評論等。
private void dealWithTextView(TextView v) {String className = v.getClass().getName();String text = ((TextView)v).getText().toString().trim().replaceAll("\n", " ");if (!v.isShown())
return;
if (text.equals(""))
return;
if (className.equals("com.tencent.mm.plugin.sns.ui.AsyncTextView")) {//好友昵稱
...
}
else if (className.equals("com.tencent.mm.plugin.sns.ui.SnsTextView")) {//朋友圈文字內容
...
}
else if (className.equals("com.tencent.mm.plugin.sns.ui.MaskTextView")) {if (!text.contains(":")) {
//點贊
...
} else {
//評論
...
}
}
}
自此,我們已經從微信APP里取得了朋友圈數據。當然,這部分抓取代碼需要定時執行。因為從 ListView中抓到的數據只有當前顯示在屏幕上的可見部分,為此需要每隔很短一段時間再次執行,讓用戶在下滑載入的過程中抓取更多數據。
剩下的就是數據分類處理和格式化輸出到文件,受本文篇幅所限不再贅述,詳細實現可參考作者GitHub上的源碼。

閱讀全文

與python微信實戰相關的資料

熱點內容
php讀取文件格式 瀏覽:612
開發程序員的電影 瀏覽:743
pc端解壓文件下載 瀏覽:708
單片機C語言讀寄存器 瀏覽:164
linux火車源碼 瀏覽:793
小米手機應用加密怎樣解除 瀏覽:523
幫孩子解壓的句子 瀏覽:140
木匠編程 瀏覽:832
笑話pdf 瀏覽:441
pdf變形 瀏覽:852
微信app最下面的菜單欄叫什麼 瀏覽:249
我的世界晚上七點有什麼伺服器 瀏覽:176
雲伺服器不見了怎麼辦 瀏覽:965
怎麼看電腦ntp伺服器地址 瀏覽:579
程序員是干什麼的需要什麼素質 瀏覽:371
程序員畫圖工具哪個好 瀏覽:760
qq賬號被加密怎麼辦 瀏覽:441
怎麼找到永劫無間文件夾 瀏覽:94
linuxshell毫秒 瀏覽:539
程序員人生的十大要點 瀏覽:386