現在、IoTオブジェクトを制御するPythonスクリプトを使用してWebサイトを管理しようとしています。POST行ベースのテキストデータ:text/plain
私が発見したものから、コントロールが2倍にやっている:デバイスを制御するために必要なIDを取得するために
- POSTメソッド、。 ID
最初のものが、このPythonスクリプトで動作しているとIDを使用して
import requests
url = 'http://local_IP/login.cgi'
payload = {'lgname': 'theLogin', 'lgpin': 'thePin'}
r = requests.post(url, data=payload)
(ユーザがログインしているときにデバイスを制御するために)、私はWiresharkのとコマンドを捕獲し、ここでの情報は、次のとおり
POST /user/keyfunction.cgi HTTP /1.1\r\n
のContent-Type:text/plainの;のcharset = UTF-8 \ Rを\ n
リファラー:http://LOCAL_IP/login.cgi \ R \ nは
、その後私は:
ラインベースのテキストデータ:平文/
のSES = IDReceivedWithTheFirstPOST & COMM = 80 &データ0 = 2 & DATA2 = 18 & DATA1 = 1
基本的には、私はこの "行ベースのテキストデータ:text/plain"を使ってPythonでPOSTを行う方法が必要ですが、それに対処する方法はありません。それはいつの日か、誰を助けることができる場合は、ここに私の作業のコードは次のとおりです:
import requests
from collections import OrderedDict
session = requests.Session()
url = 'http://LOCAL_IP/login.cgi'
payload = {'lgname': 'User', 'lgpin': 'Password'}
r_login = session.post(url, data=payload)
with open('data.txt', 'w') as output:
output.write(r_login.text)
text = 'function getSession(){return'
with open('./data.txt', 'rb') as f:
for line in f:
if line.find(text) == 1:
id = line.split()[2][1:17]
print(id)
data = OrderedDict()
data['sess']=id
data['comm']=80
data['data0']=2
data['data2']=1
data['data1']=16
url = 'http://LOCAL_IP/user/keyfunction.cgi'
r_keyfunction = session.post(url, data=data)
with open('data2.txt', 'w') as output:
output.write(r_keyfunction.text)
は
が
バティスト
EDIT、ありがとう、あなたは私を助けることができるでしょうホープ
: 'プリント( "{} \ N {}" 形式(R。 .headers、r.content)) 'もしあなたがその出力を表示したら、私はあなたが望むPOSTリクエストをフォローアップすることができます。 –
ありがとうございます。私はprint(r.text)から取得しました。 "function getSession(){return" randomNumber "}のような行です。後で抽出するために検索機能を実装しますが、それは問題ではありません。変数に一度持っていれば、2番目のPOSTを実行します。 –