Heim  >  Artikel  >  Backend-Entwicklung  >  Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...

WBOY
WBOYnach vorne
2023-05-28 08:55:21967Durchsuche

„Dies sind Daten, die vom Computer in ihrer Höhle exportiert wurden. Sie können zuerst sehen, ob Sie irgendwelche Hinweise finden, und dann werde ich ein paar Leute suchen, um Fragen zu stellen.“

Team Wang hat mir einen USB-Stick zugeworfen Er fuhr los und holte ihn ab. Nachdem er ein paar Bissen Essen in die Brotdose gestopft hatte, nahm er seinen Hut und verließ schnell das Büro.

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...

Heute Abend gingen wir den Geheimdienstinformationen zufolge zu einem MLM-Höhle, um eine Verhaftungsaktion durchzuführen und brachten mehr als ein Dutzend Menschen zurück.

Am Tatort wurden jedoch keine wichtigen Beweise gefunden, und die wenigen Festgenommenen schwiegen. Jetzt gibt es keine Möglichkeit herauszufinden, ob sie andere Höhlen haben oder wer ihre Online-Agenten sind, und die Operation ist ins Stocken geraten . .

Und das Dokument, das ich derzeit in der Hand habe, könnte zum Schlüssel zur Lösung der Situation werden.

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...

Ich habe begonnen, diese Liste von Personen zu beobachten: Das Feld „invite_id“ wird nicht wiederholt und sollte eine Eins-zu-eins-Beziehung zum Namen der Person haben; erschien in Invitation_id.

Wir können also grundsätzlich folgern, dass es sich hierbei um eine Liste handelt, die die Upline- und Downline-Beziehungen von MLM-Organisationen aufzeichnet. Es gibt Hunderte von Daten, die belegen, dass es sich um eine große kriminelle Organisation handelt.

In weniger als einer Stunde ist Team Wang zurück.

„Es nützt nichts, Sie sind immer noch ein harter Redner.“ Kapitän Wang setzte sich auf den Stuhl und warf einen Blick auf die Uhr. „Wie steht es mit den Daten? Haben Sie Hinweise gefunden?“

„Das ist eine sehr große Organisation mit insgesamt Hunderten von Mitgliedern. Möglicherweise haben wir jetzt nur die Spitze des Eisbergs erfasst

“ Sie haben Recht , aber aus diesem Grund müssen wir uns jetzt beeilen.“ Team Wang ging zu meiner Station: „Unsere Aufgabe ist es jetzt, zuerst ihre oberste Linie zu finden und zuerst den Dieb zu fangen, aber wir werden zuerst den König fangen Die angekommenen konnten zwar nichts herausfinden, konnten aber ihre Verwandtschaft immer noch nicht feststellen. „Wovon redest du?“ Mir fiel plötzlich ein, was ich vor einiger Zeit gesehen hatte Ich bin darauf gestoßen, dass es dieses Mal nützlich sein könnte. „Überlassen Sie es mir, geben Sie mir fünf Minuten.“

Verwenden Sie zuerst Pandas, um die Daten in die Datei zu importieren und die Teile herauszufiltern, die wir benötigen:

df = pd.read_excel('./doc/1_evidence.xls')
df = df.loc[:, ['id','name','invite_id','invited_id']]
df.columns = ['id','title','to', 'from']

Rufen Sie dann die Netzwerkx-Bibliothek auf, um ein hierarchisches Beziehungsdiagramm zu generieren und es zu exportieren:

G = nx.from_pandas_edgelist(df, 'from', 'to', create_using=nx.DiGraph())

nt = net.Network('960px', '1280px', directed=True)
nt.from_nx(G)
nt.show('1_evidence.html')

Auf diese Weise erhielt ich das diesem Dokument entsprechende hierarchische Beziehungsdiagramm, und die Beziehung zwischen der oberen und unteren Linie war sofort klar:

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...Für einen Moment sah Team Wang glücklich aus, kehrte aber sofort zur Ernsthaftigkeit zurück : „Sind Sie nicht ein bisschen auffällig? Obwohl es sehr intuitiv erscheint, können Sie herausfinden, wer die Spitze dieser Organisation ist?“ Natürlich ist es für mich nicht schwierig. Die Spitze ist der Wurzelknoten des Netzwerks im Bild , und es dürfen keine anderen Punkte darauf zeigen, wir müssen also nur alle Knoten durchlaufen und den Punkt mit Grad 0 finden.

# 找到根节点
top_node = []
for node, degrees in G.in_degree():
if degrees == 0:
top_node.append(node)
print('Big Boss:', top_node)

„Big Boss: [100000]“ Diese Ausgabe erscheint auf dem Bildschirm. „Zur Nummer 100000 gibt es keine entsprechende Person in der Tabelle, aber es gibt nur eine Person, die unter 100000 offline ist, mit der Nummer 162385. Er sollte der Leiter dieser Organisation sein.“

„Ja, das ist es, was ich will! Das werde ich.“ Bitten Sie andere Kollegen, diese Personeninformationen zu finden. Studieren Sie die Daten weiter und finden Sie alle Personen, die dieser Person nahe stehen Anzahl der Schichten, in denen sich alle Knoten befinden.

# 设置所有节点级别
l = nx.shortest_path_length(G, 100000)
nx.set_node_attributes(G, l, 'level')

# 计算每级人员数目
data = {}
for node, level in l.items():
if level in data.keys():
data[level].append(node)
else:
data[level] = [node]
for level, nodes in data.items():
print(level, len(nodes))

Diese Organisation hat sich auf 36 Ebenen entwickelt. Wenn ich darüber nachdenke, habe ich es zum Glück rechtzeitig entdeckt.

Dann färben Sie die Knoten entsprechend der Ebene ein, um die Beobachtung zu erleichtern:

# 添加颜色
for node in G.nodes:
G.nodes[node]['title'] = str(node)
level = G.nodes[node]['level']

if level == 0:
G.nodes[node]['color'] = 'red'
elif level == 1:
G.nodes[node]['color'] = 'orange'
elif level == 2:
G.nodes[node]['color'] = 'yellow'

Sie können sehen, dass die Person mit der Nummer 162385 nur zwei Offlines hat und jede dieser beiden Offlines Dutzende andere entwickelt hat. Das ist ziemlich interessant darüber.

„Gefunden!“ Team Wang öffnete die Bürotür. „Die Person wurde gefunden. Unter der Gruppe der heute Abend festgenommenen Personen befanden sich auch zwei seiner Untergebenen. Sie haben es alle zugegeben. Jetzt wird überprüft.“ Die tatsächliche Situation stimmt dank dieser Liste vollständig mit meinen Spekulationen überein.

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...„Du hast heute Abend einen tollen Job gemacht!“ Kapitän Wang kam vorbei und klopfte mir auf die Schulter. „Aber es ist noch nicht vorbei. Nach ihren Geständnissen enthält die Akte alle Personalinformationen ihrer Organisation. Jetzt können Sie für mich herausfinden, welche Personen sie am meisten entwickelt haben, und wir werden auf der Grundlage der Informationen sofort gezielte Verhaftungen veranlassen.“

Es ähnelt dem vorherigen, aber dieses Mal muss ich die Außengrade aller Knoten durchlaufen, sie dann in umgekehrter Reihenfolge sortieren und nur die ersten paar nehmen.

# 给下线前十的目标添加颜色
degrees = G.out_degree()
top_nodes = sorted(degrees, key=lambda x: x[1], reverse=True)[:10]
print(top_nodes)

for node in top_nodes:
G.nodes[node[0]]['color'] = 'green'

然后给目标节点加上颜色,方便观察,最终得到了这样的关系图:

Dank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen ...

“干得不错,只要再把这几个人抓到,就相当于切断了这个组织的大动脉,后面的慢慢收尾就可以了。”王队把文件合上,笑着对我说。“没想到你还有这本事,真是后生可畏啊!”

“今天抓到的那三条大鱼,现在审出什么结果了?”相对于其他,我还是对案情本身更感兴趣。

“别提了,都快笑死我了。这仨人看见证据直接慌了神,开始互相推卸责任,老大说同伙全是另外两个人拉来的他都没参与,另外俩人说骗局全是老大策划的他们就是手下打工的,现在估计还吵着呢...”

Das obige ist der detaillierte Inhalt vonDank des Erlernens dieser Python-Bibliothek konnte ich in einer Nacht ein Pyramidensystem beseitigen .... Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen