[英]How to automatically submit a (POST) form from remote server?
我正在尝试自动填写字段并在另一台服务器上提交表单。 我对目标页面和服务器没有任何控制权。
我尝试使用Snoopy类编写运行的PHP代码来完成这项工作,但它没有用( 这里有描述)
我尝试填写并自动提交的页面是: http : //example.com/? page = a,页面来源如下:
<form action="" method="post" class="horizontal-form" role="form" >
<input type="hidden" name="submit_form" value="true" />
<input type="text" name="field_name" class="form-control" value="" >
<button type="submit" class="btn"><i class="icon-ok"></i> Send</button>
</form>
知道如何使用我自己网站上的脚本/ php代码自动填写“field_name”并自动提交此表单吗? 我想我也可以用CURL来做,但我是新手,不知道怎么做。 :(
谢谢您的帮助。
你不能用php填写表单,因为php是一种服务器端语言。 你可以用javascript填写表格。 有一些框架可以做到这一点(phantomjs,casperjs)。
您可以尝试使用PHP中的curl直接发布表单数据。
<?php
$data = array(
'submit_form' => 1,
'field_name' => 'your value here',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/post-url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
您可以通过查看浏览器的控制台找到该网址:
您的请求可能会被阻止,因为它来自另一台服务器,但您可以尝试一下。 如果你想“模仿”普通访问者,你可以从设置用户代理字符串开始,也可以修改HTTP_REFERER。
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com/the-url-of-the-form');
$(document).ready(function(){ $('#form1').submit(ajax); }) function ajax(){ $.ajax({ url : 'inserir.php', type : 'POST', data : $('form').serialize(), success: function(data){ $('#resultado').html(data); } }); return false; } ... window.onload=function(){ setInterval(ajax, 5000); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.