从Python的节点JS POST请求
[免责声明:我在网络工程的绝对新手!! :)]
我建立与用户和他们的密码小数据库服务器的NodeJS。我创造了我的小网站这样您可以在您的用户名和密码,它创建让你登录你的会话放弃。它工作正常。
现在我想用Python语言编写的东西自动登录小咂舌。研究吨的后,我想出了这样的Python程序:
import requests
def authentification():
s = Session();
req = Request('POST', "http://192.168.7.1:3000/auth")
prepped = req.prepare()
prepped.body = 'username=test&password=test'
#del prepped.headers['Content-Type']
resp = s.send(prepped)
print resp.text
r = requests.get('http://192.168.7.1:3000/home')
print r.text
我在应用程序的NodeJS功能如下:
app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
console.log("Somebody tries to acces");
console.log(username)
if (username && password) {
connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
if (results.length > 0) {
request.session.loggedin = true;
request.session.cookie.maxAge = 3000;
request.session.username = username;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});
当我尝试像我这样做是为了authentificate你在我PROGRAMM浏览器,我将结束:response.send(“请输入用户名和密码!”);什么是错的我POST请求什么,我需要改变,它会找到我的用户名和密码?
对我来说另一个重要的问题是,我怎么能保持清醒会议在Python做一些其他请求。对于文件等?
非常感谢您的帮助!如果有任何问题,我的问题,或是我给出的输入,请告诉我一个我会给信息你需要的!
亲切的问候卡尔
回答如下:Python part (client)
随着requests module您可以发送使用data
属性您提供包含您的有效载荷的字典到一个POST请求。它会看起来像这样
import requests
url = 'http://localhost:3000/auth'
correct_payload = {'username': 'hello', 'password': 'p4$$w0rd!'}
wrong_payload = {'username': 'hello'}
# Output => OK
r = requests.post(url, data=correct_payload)
print(r.text)
# Output => You need to provide Username & password
r = requests.post(url, data=wrong_payload)
print(r.text)
Node.JS part (server)
要分析你从客户端接收数据,使用body-parser包作为Express.js middleware。这将解析,并把你的数据在req.body
。代码如下所示
const express = require('express')
const bodyParser = require('body-parser')
const port = 3000
const app = express()
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/auth', (req, res) => {
const { username, password } = req.body;
if (username && password) {
res.send('OK'); // ALL GOOD
} else {
res.status(400).send('You need to provide Username & password'); // BAD REQUEST
}
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
从Python的节点JS POST请求
[免责声明:我在网络工程的绝对新手!! :)]
我建立与用户和他们的密码小数据库服务器的NodeJS。我创造了我的小网站这样您可以在您的用户名和密码,它创建让你登录你的会话放弃。它工作正常。
现在我想用Python语言编写的东西自动登录小咂舌。研究吨的后,我想出了这样的Python程序:
import requests
def authentification():
s = Session();
req = Request('POST', "http://192.168.7.1:3000/auth")
prepped = req.prepare()
prepped.body = 'username=test&password=test'
#del prepped.headers['Content-Type']
resp = s.send(prepped)
print resp.text
r = requests.get('http://192.168.7.1:3000/home')
print r.text
我在应用程序的NodeJS功能如下:
app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
console.log("Somebody tries to acces");
console.log(username)
if (username && password) {
connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
if (results.length > 0) {
request.session.loggedin = true;
request.session.cookie.maxAge = 3000;
request.session.username = username;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});
当我尝试像我这样做是为了authentificate你在我PROGRAMM浏览器,我将结束:response.send(“请输入用户名和密码!”);什么是错的我POST请求什么,我需要改变,它会找到我的用户名和密码?
对我来说另一个重要的问题是,我怎么能保持清醒会议在Python做一些其他请求。对于文件等?
非常感谢您的帮助!如果有任何问题,我的问题,或是我给出的输入,请告诉我一个我会给信息你需要的!
亲切的问候卡尔
回答如下:Python part (client)
随着requests module您可以发送使用data
属性您提供包含您的有效载荷的字典到一个POST请求。它会看起来像这样
import requests
url = 'http://localhost:3000/auth'
correct_payload = {'username': 'hello', 'password': 'p4$$w0rd!'}
wrong_payload = {'username': 'hello'}
# Output => OK
r = requests.post(url, data=correct_payload)
print(r.text)
# Output => You need to provide Username & password
r = requests.post(url, data=wrong_payload)
print(r.text)
Node.JS part (server)
要分析你从客户端接收数据,使用body-parser包作为Express.js middleware。这将解析,并把你的数据在req.body
。代码如下所示
const express = require('express')
const bodyParser = require('body-parser')
const port = 3000
const app = express()
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/auth', (req, res) => {
const { username, password } = req.body;
if (username && password) {
res.send('OK'); // ALL GOOD
} else {
res.status(400).send('You need to provide Username & password'); // BAD REQUEST
}
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))