よく、不正ログインの防ぐために、画像認証などありますが、どうやってプログラムからログインしてるのか、やっとわかりました。
まず、以前自作したメールボックス
http://open-box.co/login.php
phpで、username, passwordをmysqlと照合してcheckしています。
public function login($username, $password){ $stmt = $this->mysqli->prepare( "SELECT password FROM users WHERE username = ?"); $stmt->bind_param('s', $_POST["username"]); $stmt->execute(); $stmt->store_result(); if($stmt->num_rows == 1){ $stmt->bind_result($hash); while ($stmt->fetch()){ if(password_verify($_POST['password'], $hash)){ $_SESSION["username"] = $_POST["username"]; return true; } } } return false; }
pythonでusernameとpasswordのsessionをpostします。
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin USER = "hoge" PASS = "hogehoge" session = requests.session() login_info = { "username" : USER, "password": PASS, } url_login = "http://open-box.co/login.php" res = session.post(url_login, data=login_info) res.raise_for_status() print("success")
エラーだと、res.raise_for_status()でエラーが表示される筈ですが、、、
来た!!!!!
[vagrant@localhost python]$ python3 app.py
success
bs4も使いたい。