cURL是什么

cURL: http://php.net/manual/zh/book.curl.php

PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

这些函数在 PHP 4.0.2 中引入。

使用cookie模拟登录,来查看需登录后才能浏览的页面 (get方式)

set_time_limit();
//目标url
$url = "http://www.aa.com/index.php/Home/task/add";
//使用的cookie,路径自己修改
$cookie_file = __DIR__ . "/".'cookies.txt';
$cookie_file = realpath($cookie_file);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //使用上面获取的cookies
$response = curl_exec($ch);
curl_close($ch);
echo $response;

使用cookie模拟post提交请求

set_time_limit();
//目标url
$url = 'http://www.aa.com';
//post查询条件
$fields = 'claimType=01&orderBy=1&pageSize=300&page.webPager.action=refresh&page.webPager.pageInfo.totalSize=8000&page.webPager.pageInfo.pageSize=300&page.webPager.currentPage=1';
//cookie文件
$cookie_file = __DIR__ . "/".'cookies.txt';
$cookie_file = realpath($cookie_file); $curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => ,
CURLOPT_TIMEOUT => ,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_COOKIEFILE => $cookie_file,
CURLOPT_COOKIEJAR => $cookie_file,
CURLOPT_HTTPHEADER => array(
"accept: */*",
"accept-encoding: gzip, deflate",
"accept-language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,ja;q=0.2",
"cache-control: no-cache",
"connection: keep-alive",
"content-type: application/x-www-form-urlencoded",
//"cookie: $cookie",
"origin: http://www.**.com",
"pragma: no-cache",
"referer: http://www.****.com",
"user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
"x-requested-with: XMLHttpRequest"
),
)); //url
curl_setopt($curl, CURLOPT_URL, $url);
//post fields
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields); $response = curl_exec($curl);
$err = curl_error($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
echo $response;

注意:在测试的时候,用火狐浏览器导出cookie为txt文件时,如果有些cookie项是关闭浏览器就失效,则导出的cookie文件中会缺失过期时间这一项,导致使用curl时功能不正常。所以在cookie文件生成后,可先检查下项。

如,下面是缺失的

www.qlm.com    FALSE    /    FALSE    PHPSESSID    as6if5c6d5ts23nrsgbq0a94b7
www.qlm.com FALSE / FALSE uname %E7%AE%A1%E7%%%E5%%

可以手动补全,变成下面这样

www.qlm.com    FALSE    /    FALSE        PHPSESSID    as6if5c6d5ts23nrsgbq0a94b7
www.qlm.com FALSE / FALSE uname %E7%AE%A1%E7%%%E5%%

PHP cURL 使用cookie 模拟登录的更多相关文章

  1. 模拟登录神器之PHP基于cURL实现自动模拟登录类

    一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...

  2. Java通过httpclient获取cookie模拟登录

    package Step1; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.Htt ...

  3. Python3之利用Cookie模拟登录

    Python3之利用Cookie模拟登录 利用Cookie模拟登录步骤: 1.       在浏览器输入http://demo.bxcker.com,输入用户名和密码登录. 2.登录成功点" ...

  4. PHP获取Cookie模拟登录CURL

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookie ...

  5. PHP获取Cookie模拟登录CURL(转)

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookie ...

  6. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  7. PHP获取Cookie模拟登录

    关键字:CURL Cookie CURLOPT_COOKIEJAR CURLOPT_COOKIEFILE 模拟登录 PHP作者:方倍工作室原文:http://www.cnblogs.com/txw19 ...

  8. php通过curl扩展进行模拟登录(含验证码)

    以下为本人工作中遇到的需要做的事情,之前也没怎么用过curl,查了好多资料,才稍微弄明白一点:本文所有内容只是自己平日工作的记录,仅供大家参考:<?php/*** 模拟登录*/header(&q ...

  9. Python手动构造Cookie模拟登录后获取网站页面内容

    最近有个好友让我帮忙爬取个小说,这个小说是前三十章直接可读,后面章节需要充值VIP可见.所以就需要利用VIP账户登录后,构造Cookie,再用Python的获取每章节的url,得到内容后再使用 PyQ ...

随机推荐

  1. [LeetCode] Word Squares 单词平方

    Given a set of words (without duplicates), find all word squares you can build from them. A sequence ...

  2. Html-IOS下input的样式添加不上的解决方案

    问题描述: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&qu ...

  3. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  4. C# http请求数据

    http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...

  5. android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取

    package com.jasgroup.cn.amhdeam; import java.io.IOException; import java.util.Iterator; import andro ...

  6. 【poj2409】 Let it Bead

    http://poj.org/problem?id=2409 (题目链接) 题意 一个n个珠子的项链,每个珠子可以被染成t种颜色.项链可以翻转和旋转,问不同的染色方案数. Solution Pólya ...

  7. c#上级目录

    本文实例讲述了C#的path.GetFullPath 获取上级目录实现方法,分享给大家供大家参考.具体实现方法如下: string path = new directoryinfo("../ ...

  8. Linux 基础

    命令说明 $ type cmd # 获取命令类型 $ which cmd # 命令的位置 $ help cmd / cmd --help / man cmd # 获取命令帮助 $ whatis cmd ...

  9. 【mysql】mysql 常用建表语句

    [1]建立员工档案表要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门.[2]合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primary ...

  10. AngularJS版本下载

    大家可以从下面地址获取AngularJS所以版本: https://code.angularjs.org/