エアドロDailyタスクの自動化@python
今回は、エアドロタスクで頻繁にある、毎日WEBページ上のボタンをクリックするような案件の自動化をします。
つまり、pythonプログラムからWEBサーバーにエアドロタスクをやりましたよー、という情報を送信する、ということです。
やり方を覚えてしまえば他の案件にも応用が効くと思うのでまとめておきます。
対象となるエアドロタスク(Lisk)
対象は何でも良いのですが、現在私が取り組んでいるエアドロ案件のLiskを取り上げます。
Lisk Portal:
Referral Code:
bhM32x
ここには、毎日Lisk Portalに訪問するだけのタスクが存在します。
Claim Pointsボタンを押すだけ、です。

つまり、Claim Pointsボタンを押したときに自分のPCからLisk Portalのサーバーにどんなリクエストが送られているのかを確認し、それをpythonコードから実行できるようにして、これを毎日定期的に実行できるようにすれば自動化できます。
pythonコードの作成方法
使用しているブラウザのディベロッパーツールを開きます。
(私が使用しているBraveでは、右上の三本線>その他のツール>ディベロッパーツール、でした。)
そして、Networkタブを開きます。

この状態でClaim Pointsボタンを押してみると、下記のような項目が増えます。

これをクリックするとLisk Portalのサーバーへ送られたリクエストを見られます。

表示された内容を全コピしてChatGPTに貼り付けて、これをpythonコードで実行したいのでコードを書いてください、とお願いします。
すると、ChatGPTがなんとなくコードのひな型を作成したうえで、あとはリクエストの内容を入れれば完成だよ、的な返答をしてきます。
つまり、外枠はできたけど中身が無いよ、ということ。
で、中身はというと、先ほどの画像は「Headers」というタブにいますが、これを「Payload」タブに切り替えます。Payloadが中身です。

これも全コピして、ChatGPTに貼り付けて、中身はこれだよ、と教えてあげます。
すると、そのまま実行すればOKのコードが完成します。
pythonコード
完成したコードが以下です(一部xxxで隠しています)。
#update.py
import requests
# リクエストURL
url = "https://portal-api.lisk.com/graphql"
# HTTPヘッダー
headers = {
"accept": "application/graphql-response+json",
"content-type": "application/json",
"origin": "https://portal.lisk.com",
"referer": "https://portal.lisk.com/",
"user-agent": "xxxxx",
}
# GraphQLクエリと変数
data = {
"query": """
mutation UpdateAirdropTaskStatus($input: UpdateTaskStatusInputData!) {
userdrop {
updateTaskStatus(input: $input) {
success
progress {
isCompleted
completedAt
}
}
}
}
""",
"variables": {
"input": {
"address": "xxxxx",
"taskID": 1
}
}
}
# POSTリクエストを送信
response = requests.post(url, headers=headers, json=data)
# レスポンスを出力
print("Status Code:", response.status_code)
print("Response Body:", response.json())
実行すると以下のような返答があります。

あとは、これを1日ごとに実行すれば良いので、下記の記事にある方法で繰り返せばOKです。