php使用curl带cookie访问一直失败求助
最近需要批量向织梦后台导入一些数据,但是遇到了一个头疼的问题。
环境:xampp + 别人的dede后台。
首先,利用curl发送post请求登录login.php,成功,并且保存了cookie文件。
第二步,post发送数据包到co_get_corule.php,失败,得到登录页面的源码。
于是,尝试简单的get请求,get获取index.php,同上,依旧是cookie没带上的效果。
第三步,检查cookie文件,确实存在,且内容也是正确的。
经过多次重复试验,依旧失败,于是发帖求助。
<?php
header("Content-type: text/html; charset=utf-8");
!extension_loaded('curl') && die('The curl extension is not loaded.');
$cookie_jar = tempnam('./cookies','cookie');//存放COOKIE的文件 //登陆认证
$url = 'http://localhost/dede/login.php'; //本来封装了函数,后来一直不成功,于是还原成了最原始的代码积木 $post_data='gotopage=index.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1); //设置post方式
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 1相当于return,0相当于echo curl_setopt($ch,CURLOPT_COOKIESESSION,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //设置需要post的数据
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); //保存cookie信息 curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳转后的页面,1是自动跳转
//curl_setopt($ch, CURLOPT_NOBODY,1); //输出的不包含body部分 $output1 = curl_exec($ch); //写入结果到文件
file_put_contents('login.txt', $output1); curl_close($ch); //这里本来封装了函数,后来一直不成功,于是还原成了最原始的代码积木 $url2 = "http://localhost/dede/index.php";
$ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $url2);
curl_setopt($ch2, CURLOPT_HEADER, 0); curl_setopt ( $ch2, CURLOPT_RETURNTRANSFER, 1 ); // 1相当于return,0相当于echo
curl_setopt($ch2, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch2, CURLOPT_TIMEOUT, 30); //超时时间30s
curl_setopt($ch2,CURLOPT_COOKIESESSION,true);
curl_setopt($ch2, CURLOPT_HTTPGET, 1); // 发送一个常规的get请求
curl_setopt($ch2, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($ch2,CURLOPT_COOKIEFILE,$cookie_jar);//发送cookie文件
curl_setopt($ch2, CURLOPT_COOKIEJAR, $cookie_jar); //保存cookie信息 curl_setopt($ch2, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳转后的页面,1是自动跳转
//curl_setopt($ch, CURLOPT_NOBODY,1); //输出的不包含body部分 $output = curl_exec($ch2);
file_put_contents('index.txt', $output);
curl_close($ch2); unlink($cookie_jar);
?>
以上是拆掉函数后的原始代码,不具可读性,只求能解决这个坎儿,期待大家的帮忙,谢谢!
【PS:实在不知道如何验证cookie是否起作用了】
php使用curl带cookie访问一直失败求助的更多相关文章
- android webview带cookie访问url
问题描述在原生和h5混合开发的时候会遇到这么一个问题,用webview加载某个url时,你只是app登录了账号,但是网页却没有,所有会禁止访问此url,webview就会显示白屏.所以要访问此url, ...
- HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理
原文地址:http://blog.csdn.net/cdefg198/article/details/8315438 万能框架:http://www.sufeinet.com/forum.php?mo ...
- postman发送带cookie的http请求
1:需求:测试接口的访问权限,对于某些接口A可以访问,B不能访问. 2:问题:对于get请求很简单,登录之后,直接使用浏览器访问就可以: 对于post请求的怎么测试呢?前提是需要登录态,才能访问接口. ...
- 记一次https访问握手失败(handshake failure)
文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6239518.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...
- HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式
HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式 参考路径:https://www.cnblogs.com/splendidme/archive/2011/09/14/ ...
- asp.net web api 跨域,带cookie
官网上有一个介绍 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api 但是只支 ...
- HTTPClient实现免登陆请求(带cookie请求)
背景: 使用httpClient请求某登录型网站,模拟一个操作,一般步骤一个httpclient模式登录->httpClient模拟操作: 此时发现,每次操作都需要进行一次登录,极其浪费时间,是 ...
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
1. 无关Cookie跨域Ajax请求 客户端 以 Jquery 的 ajax 为例: $.ajax({ url : 'http://remote.domain.com/corsrequest', d ...
- 爬虫学习(八)——带cookie的网页进行爬取
# 前提:# # 通常,很多网站需要登录才能进行浏览,所以在爬取这些网站时,也需要进行登录,并拿取登录时的cookie# # 登录网页,服务器会给客户端一个牌子cookie# # 访问登录页面时,带着 ...
随机推荐
- Win10上Python3通过pip安装时出现UnicodeDecodeError
http://blog.csdn.net/qq_33530388/article/details/68933201 解决方法: 打开 c:\program files\python36\lib\sit ...
- mac svn 使用
上传文件 $ svn import file.xls svn://ip/sursen/05I\&V周报 -m "te" 备注: -m "冒号里面一定填写文件 ...
- Mysql 外键级联
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...
- 用c++后缀自动机实现最大公共字符串算法,并封装成Python库
后缀自动机的C++代码转自https://e-maxx.ru/algo/suffix_automata,其余封装为自写. 在C++文件同级目录建立setup.py文件,代码如下: # !/usr/bi ...
- 开发笔记--java.lang.OutOfMemoryError: PermGen space异常处理
第一次到公司开发项目,比起之前的小项目来说这次的项目特别大,以至于运行之后出现了java.lang.OutOfMemoryError: PermGen space的异常,从字面意思上来看是内存溢出的原 ...
- windows下安装Qt
1.Linux下安装Qt与MySQL相对来说比较容易,在这里我就不多加介绍. 接下来主要介绍windows下安装Qt与MySQL. 2.在windows,我安装QtCreator, 使用的是qt-wi ...
- JDBC通用方法实现
在一些测试项目中会用到纯粹的jdbc操作数据库,下面提供统一的方法实现. import java.sql.CallableStatement; import java.sql.Connection; ...
- 2014暑假ACM训练总结
2014暑假ACM训练总结报告 匆匆之中,一个暑假又过去了,在学校训练的这段日子真的是感觉日子过得好快啊! 时光如箭,日月如梭! 匆忙的学习之中一个暑假就这样结束了,现在就来写一些总结吧,供自己以后阅 ...
- 解决系统存在大量TIME_WAIT状态的连接
系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决, vi /etc/sysctl.conf 编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ipv4 ...
- 集训Day5
生活还得继续 bzoj3771 题面让我笑了很长时间 给出 n个物品,价值为别为Xi且各不相同,现在可以取1个.2个或3个,问每种价值和有几种情况? *顺序不同算一种 很傻逼的一个母函数+容斥,用A( ...