Я пытаюсь зайти на любой сайт, используя Scrapy. Но сейчас я не могу войти на сайт, который использует Javascript FormSubmit. Следовательно, я хотел бы знать, как я могу войти на сайт, который не формирует действие, указанное в форме. Необходимо знать, как успешно войти на сайт, используя javascript и ajax.
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="card" style="margin-top:10%">
<div class="card-header">
Login
</div>
<div class="card-body">
<div id="error-msg" class="alert alert-danger" style="display:none" role="alert"></div>
<form name="login-form" id="login-form" >
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" name="email" id="email" placeholder="Enter email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password" placeholder="Password">
</div>
<button type="submit" id="login" class="btn btn-primary">Login</button>
</form>
</div>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<script>
$(function()
{
$('#login').click(function(e){
let self = $(this);
e.preventDefault(); // prevent default submit behavior
$(this).prop('disabled',true);
var data = $('#login-form').serialize(); // get form data
console.log(data)
// sending ajax reqeust to login.php file, it will proccess login reqeust and give response.
$.ajax({
url: './login.php',
type: "POST",
data: data,
}).done(function(res) {
res = JSON.parse(res);
if (res['status']) // if login successful redirect user to secure.php page.
{
location.href = "secure.php"; // redirect user to secure.php location/page.
} else {
var errorMessage = '';
// if there is any errors convert array of errors into html string,
//here we are wrapping errors into a paragraph tag.
console.log(res.msg);
$.each(res['msg'],function(index,message) {
errorMessage += '<p>' + message+ '</p>';
});
// place the errors inside the div#error-msg.
$("#error-msg").html(errorMessage);
$("#error-msg").show(); // show it on the browser, default state, hide
// remove disable attribute to the login button,
//to prevent multiple form submisstions
//we have added this attributon on login from submit
self.prop('disabled',false);
}
}).fail(function() {
alert("error");
}).always(function(){
self.prop('disabled',false);
});
});
});
</script>
</body>
</html>
Могу ли я ноу-хау войти на сайт с вышеупомянутой структурой. Где часть аутентификации обрабатывается в javascript. Я пытался с FormRequest.from_response(response,
formdata=form_data,
callback=self.check_login_response)
Но это не работает в выше. Буду признателен за ваше время для чтения. Надеюсь, вы могли бы помочь мне найти решение.