Я разработал PHP-скрипт для доставки файла после аутентификации.Автоматизация HTTP POST/GET PHP при загрузке файла с использованием заголовка и файла чтения
<?php #SERVER.PHP
if (isset($_REQUEST['uname']) && isset($_REQUEST['passwd'])) {
if ($_REQUEST['uname']=='a' && $_REQUEST['passwd']=='a') {
session_start();
session_regenerate_id();
header('Content-Disposition: attachment; filename=fake_name.pdf');
readfile('original_name.pdf');
}
}
?>
<form name="login" action="test.php" method="get">
Username: <input type="text" name="uname"> <br />
Password: <input type="text" name="passwd"> <br />
<input type="submit" name="submit" />
</form>
Поэтому я хочу, чтобы автоматизировать процесс регистрации и загрузки, сначала я попытался с помощью Wget для загрузки файла (fake_name.pdf):
$ wget "http://1.1.1.1/server.php?uname=a&passwd=a"
но скачал файл с содержанием
<form name="login" action="test.php" method="get">
Username: <input type="text" name="uname"> <br />
Password: <input type="text" name="passwd"> <br />
<input type="submit" name="submit" />
</form>
Я смог загрузить файл «mask_fname.pdf» При обращении к веб-браузеру работает отлично.
Затем я попытался написать скрипт python, чтобы получить файл, я получаю только содержимое HTML.
#py1.py
import httplib, urllib
params = urllib.urlencode({
'uname' : 'a',
'passwd' : 'a'
})
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
conn = httplib.HTTPConnection("10.1.1.2:80")
conn.request("GET", "/mdh/test.php?uname=a&passwd=a",
params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
conn.close()
#py2.py
import urllib
import urllib2
url = 'http://10.1.1.2/mdh/index.php'
form_data = {'uname': 'a', 'passwd': 'a'}
params = urllib.urlencode(form_data)
response = urllib2.urlopen(url, params)
data = response.read()
print data
Но результат был таким же для всех моих попыток. Есть ли другой способ сделать это. Есть ли другой подход для автоматизации загрузки файла (fake_name.pdf) с заданным именем пользователя и паролем, кроме автоматизации веб-браузера (ссылка python :: splinter, selenium)?
В конечном счете, мне нужно автоматизировать загрузку файла с сервера с использованием HTTP с аутентификацией.
Общие рекомендации - использовать [запросы] (http://docs.python-requests.org/en/latest/) по urllib. Вероятно, вы столкнетесь с меньшими проблемами – Willyfrog