ベーシック認証ではなくダイジェスト認証。ちょっとハマったのでメモ。
post.py
# -*- coding: UTF-8 -*-
import json
import requests
from requests.auth import HTTPDigestAuth
url = 'https://xxx.jp/xxx/xxx.php'
username = 'user'
password = 'pass'
headers = {}
headers["Content-Type"]= 'application/json'
payload = {'param':'1234'}
r = requests.post(url, auth=HTTPDigestAuth(username,password), headers=headers, data=json.dumps(payload))
print(r) # 200
print(r.text) # result