`

PHP中使用curl及代理IP模拟post提交【两种实用方法】

 
阅读更多

方法一:

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模拟POST提交数据的方法主要有使用PHP内置的cURL库和socket编程两种方式。其中,使用socket模拟POST提交数据是一种基础而强大的方法,它涉及到了网络编程的知识,使用socket可以构造HTTP请求头和内容,并且能够...

    php自动提交表单的方法(基于fsockopen与curl)_.docx

    本文将详细介绍两种实现此功能的方法:fsockopen和cURL。 1. **fsockopen方法** fsockopen是PHP内置的一个网络连接函数,它可以打开到指定服务器的TCP/IP套接字连接。以下是如何使用fsockopen来实现表单自动提交的...

    php使用curl伪造来源ip和refer的方法示例

    `Rand_IP` 函数用于生成一个随机的 IP 地址,它通过两种方式实现:直接生成随机数或从预设的 IP 段数组中随机抽取。`Curl` 函数是执行 `cURL` 请求的核心,它设置了多个 `cURL` 选项,如: - `CURLOPT_URL`:指定要...

    PHP HTTP客户端(GET POST SOAP SOCKET)

    GET和POST是HTTP协议中最基本的两种请求方法。GET用于获取资源,通常用于查询操作,请求参数显示在URL中;POST用于提交数据,适用于更新或创建资源,数据隐藏在请求体中。 在PHP中,可以使用cURL库或者file_get_...

    php的curl多线程采集

    2. **创建和添加handle**:对于每一个要采集的URL,使用`curl_init()`创建一个`curl handle`,设置相应的选项(如URL、请求方法等),然后使用`curl_multi_add_handle()`将其添加到多会话管理器中。 3. **执行多...

    php使用CURL伪造IP和来源实例详解

    通过使用CURL,开发者可以模拟用户浏览器的行为,发送HTTP请求,包括POST、GET等方法,同时还可以设置请求头,例如伪造IP地址和来源(referer)。 标题中的“php使用CURL伪造IP和来源实例详解”主要讲述的是如何...

    php异步:在php中使用fsockopen curl实现类似异步处理的功能方法

    使用这两种方法,可以实现类似于异步处理的效果,即在主程序中启动一个后台任务,然后继续执行其他代码,而不会阻塞主线程。这种技术在处理耗时任务,如数据库操作、文件上传或第三方API调用时特别有用,因为它可以...

    php模拟asp中的XmlHttpRequest实现http请求的代码

    `$url`用于设定请求的目标地址,`$method`可以是"GET"或"POST",分别对应HTTP协议中的两种主要请求类型。`$useSocket`决定使用哪种方式进行网络连接,0表示使用`fsockopen`函数,1则表示使用`socket_create`函数进行...

    php中file_get_contents与curl性能比较分析

    在PHP开发过程中,获取远程资源是一种常见的需求,file_get_contents与curl是两种常用的获取远程内容的方式。在实际应用中,它们各有特点,而在性能、稳定性和功能性上存在着显著的区别。 首先,从性能的角度来看,...

    提供国内财经门户网站股票相关数据目前有新浪和凤凰网的数据

    这可能包括设置合理的请求间隔、使用代理IP、模拟用户行为(如添加随机延迟)等策略。 在实际操作中,我们还需要考虑数据清洗和存储。清洗数据可能包括去除HTML标签、处理异常值、统一数据格式等。存储数据可以选择...

    spider:使用 PHP 进行爬虫

    cURL提供了更多的选项来控制请求行为,如设置请求头、模拟POST请求等。 2. **解析HTML**:PHP没有内置的HTML解析器,但可以借助DOMDocument和DOMXpath类来解析HTML文档。这两个类允许我们定位和提取HTML元素中的...

    采集类(使用)

    - **请求处理**:使用cURL或Guzzle发送GET/POST请求,获取响应内容。 - **内容解析**:使用DOM或正则表达式解析HTML,提取目标数据。 - **数据清洗**:对抓取到的数据进行预处理,如去除空格、转义特殊字符等。 - **...

Global site tag (gtag.js) - Google Analytics