方法一:
function request_by_other($remote_server,$post_string){
$context = array(
'http'=>array(
'proxy'=>'127.0.0.1:8787', // 代理IP
'request_fulluri'=>true, // 是否使用代理
'method'=>'POST',
'header'=>'Content-type: application/x-www-form-urlencoded'."\r\n".
'User-Agent : Jimmy\'s POST Example beta'."\r\n".
'Content-length: '.strlen($post_string)+8,
'content'=>'article_id='.$post_string)
);
$stream_context = stream_context_create($context);
$data = @file_get_contents($remote_server,FALSE,$stream_context);
return $data;
}
$remote_server = "http://www.xxxxx.com/article/yj/views.jhtml";
$post_string = "10898";
var_dump(request_by_other($remote_server, $post_string));
方法二:
function curl_string ($url,$user_agent,$proxy){
$ch = curl_init();
if (!empty($proxy)) { // 有代理IP就使用代理
curl_setopt ($ch, CURLOPT_PROXY, $proxy); // 使用代理IP
// 伪造客户端来源IP
$xforip = rand(1, 254).".".rand(1, 254).".".rand(1, 254).".".rand(1, 254);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP:'.$xforip, 'X-FORWARDED-FOR:'.$xforip));
}
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'article_id=10898');
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); //模拟用户使用的浏览器
curl_setopt ($ch, CURLOPT_COOKIEJAR, dirname(__FILE__)."\cookie.txt");
// curl_setopt ($ch, CURLOPT_HEADER, 1); //输出头信息
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt ($ch, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
$url_page = "http://www.xxxxxx.com/article/yj/views.jhtml";
$user_agentArray = array(
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36",
);
$proxyArray = array(
"http://125.39.68.180:80",
"http://111.206.81.248:80",
);
$proxy = empty($proxyArray) ? "" : $proxyArray[rand(0, count($proxyArray) - 1)];
$user_agent = $user_agentArray[rand(0, count($user_agentArray) - 1)];
var_dump(curl_string($url_page,$user_agent, $proxy));
分享到:
相关推荐
PHP模拟POST提交数据的方法主要有使用PHP内置的cURL库和socket编程两种方式。其中,使用socket模拟POST提交数据是一种基础而强大的方法,它涉及到了网络编程的知识,使用socket可以构造HTTP请求头和内容,并且能够...
本文将详细介绍两种实现此功能的方法:fsockopen和cURL。 1. **fsockopen方法** fsockopen是PHP内置的一个网络连接函数,它可以打开到指定服务器的TCP/IP套接字连接。以下是如何使用fsockopen来实现表单自动提交的...
`Rand_IP` 函数用于生成一个随机的 IP 地址,它通过两种方式实现:直接生成随机数或从预设的 IP 段数组中随机抽取。`Curl` 函数是执行 `cURL` 请求的核心,它设置了多个 `cURL` 选项,如: - `CURLOPT_URL`:指定要...
GET和POST是HTTP协议中最基本的两种请求方法。GET用于获取资源,通常用于查询操作,请求参数显示在URL中;POST用于提交数据,适用于更新或创建资源,数据隐藏在请求体中。 在PHP中,可以使用cURL库或者file_get_...
2. **创建和添加handle**:对于每一个要采集的URL,使用`curl_init()`创建一个`curl handle`,设置相应的选项(如URL、请求方法等),然后使用`curl_multi_add_handle()`将其添加到多会话管理器中。 3. **执行多...
通过使用CURL,开发者可以模拟用户浏览器的行为,发送HTTP请求,包括POST、GET等方法,同时还可以设置请求头,例如伪造IP地址和来源(referer)。 标题中的“php使用CURL伪造IP和来源实例详解”主要讲述的是如何...
使用这两种方法,可以实现类似于异步处理的效果,即在主程序中启动一个后台任务,然后继续执行其他代码,而不会阻塞主线程。这种技术在处理耗时任务,如数据库操作、文件上传或第三方API调用时特别有用,因为它可以...
`$url`用于设定请求的目标地址,`$method`可以是"GET"或"POST",分别对应HTTP协议中的两种主要请求类型。`$useSocket`决定使用哪种方式进行网络连接,0表示使用`fsockopen`函数,1则表示使用`socket_create`函数进行...
在PHP开发过程中,获取远程资源是一种常见的需求,file_get_contents与curl是两种常用的获取远程内容的方式。在实际应用中,它们各有特点,而在性能、稳定性和功能性上存在着显著的区别。 首先,从性能的角度来看,...
这可能包括设置合理的请求间隔、使用代理IP、模拟用户行为(如添加随机延迟)等策略。 在实际操作中,我们还需要考虑数据清洗和存储。清洗数据可能包括去除HTML标签、处理异常值、统一数据格式等。存储数据可以选择...
cURL提供了更多的选项来控制请求行为,如设置请求头、模拟POST请求等。 2. **解析HTML**:PHP没有内置的HTML解析器,但可以借助DOMDocument和DOMXpath类来解析HTML文档。这两个类允许我们定位和提取HTML元素中的...
- **请求处理**:使用cURL或Guzzle发送GET/POST请求,获取响应内容。 - **内容解析**:使用DOM或正则表达式解析HTML,提取目标数据。 - **数据清洗**:对抓取到的数据进行预处理,如去除空格、转义特殊字符等。 - **...