php cURL 问题

2024-01-08

    <?php
$email = "";
$password = "";
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";


//curl get
function curl_get($url, $cookiefile) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

//curl post

function curl_post($url, $cookiefile, $post) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

//cookie file

$cookiefile = "cookie.txt";


//get url to grab GALX & dsh to login
$data = curl_get("https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&ltmpl=sso", $cookiefile);


preg_match('/name="GALX"\s*value="(.*?)"/', $data, $galx);

preg_match('/name="dsh" id="dsh"\s*value="(.*?)"/', $data, $dsh);


//login
$data = curl_post("https://www.google.com/accounts/ServiceLoginAuth", $cookiefile, "ltmpl=sso&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&service=youtube&uilel=3&dsh=$dsh[1]&ltmpl=sso&hl=en_US&ltmpl=sso&timeStmp=&secTok=&GALX=$galx[1]&Email=$email&Passwd=$password&PersistentCookie=yes&rmShown=1&signIn=Sign+in&asts=");

//auth url
$data = curl_get("https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&service=youtube&ltmpl=sso&chtml=LoginDoneHtml", $cookiefile);


// youtube 
$data = curl_get("http://www.youtube.com/", $cookiefile);
print $data;

?>

这是我的代码,在最后一行,当我打印出 youtube.com 的内容时,它显示我没有登录..有人知道我在这里做错了什么吗?要登录谷歌,您需要获取 GALX 和 dsh 值,我正在这样做。这真是令人头疼!


这是我的代码,在我打印 youtube.com 内容时的最后一行 显示我没有登录..

Google 是对的:) 你看,你一遍又一遍地使用curl_init(),这意味着每次调用curl_get 和curl_post 函数时都会启动新的会话。您应该只初始化一次并传递您检索到的资源。那应该可以解决你的问题。

编辑:冒昧重写您的代码来说明:

<?php
$email = "";
$password = "";



//curl get
function curl_get( $curl, $url, $cookiefile) {
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" );
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    return $data;
}

//curl post

function curl_post( $curl, $url, $cookiefile, $post) {
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" );
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    return $data;
}

//cookie file
$cookiefile = "cookie.txt";

$curl = curl_init( );

//get url to grab GALX & dsh to login
$data = curl_get( $curl, "https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&ltmpl=sso", $cookiefile);


preg_match('/name="GALX"\s*value="(.*?)"/', $data, $galx);

preg_match('/name="dsh" id="dsh"\s*value="(.*?)"/', $data, $dsh);


//login
$data = curl_post( $curl, "https://www.google.com/accounts/ServiceLoginAuth", $cookiefile, "ltmpl=sso&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&service=youtube&uilel=3&dsh=$dsh[1]&ltmpl=sso&hl=en_US&ltmpl=sso&timeStmp=&secTok=&GALX=$galx[1]&Email=$email&Passwd=$password&PersistentCookie=yes&rmShown=1&signIn=Sign+in&asts=");

//auth url
$data = curl_get( $curl, "https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&service=youtube&ltmpl=sso&chtml=LoginDoneHtml", $cookiefile);


// youtube 
$data = curl_get( $curl, "http://www.youtube.com/", $cookiefile);
print $data;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php cURL 问题 的相关文章

  • mysqli_real_escape_string 无法正常工作

    我已经搜索过 但我发现似乎没有任何效果 我的问题是 当使用特殊字符作为 输入查询会中断 现在 我尝试在字符串上使用 mysqli real escape string 但这会返回一个空白值 我读到 mysqli real escape st
  • Yii 添加条件

    我尝试根据我的条件从表中获取行 我的代码 conditions array id gt array 148028 118508 criteria new CDbCriteria foreach conditions as key gt va
  • php-curl 不支持 url 中的 utf-8

    我正在尝试将 http 请求从我的服务器发送到 php 中的另一台服务器 例如 我发送请求的 URL 包含一些 utf8 字符http www aparat com etc api videoBySearch text http www a
  • DOMDocument 对我的字符串做了什么?

    dom new DOMDocument 1 0 UTF 8 str p Hello p var dump mb detect encoding str dom gt loadHTML str var dump dom gt saveHTML
  • 如何检查 id 是否已存在 - codeigniter

    我正在尝试检查数据库中的 id 是否已存在 如果不存在则仅插入该 id 而不是其他存在的 id 我尝试执行一个 where 语句来检查数据库中是否存在它们的 id 但即使它们是新信息 它也不会将其插入数据库中 我在这里很迷路 任何指导将不胜
  • 无法在WordPress的functions.php中使用php fopen()函数

    我正在尝试简单地运行 fopen 函数 php 并且也尝试过test phpWordPress 模板文件 但这不起作用 如果我将 test php 文件和 csv 文件移动到主题文件夹之外的位置 那么它第一次可以工作 function cs
  • PHP 数组的最大键大小是多少?

    我正在生成关联数组 键值是 1 n 列的字符串连接 会回来咬我的钥匙有最大长度吗 如果是这样 我可能会停下来并采取不同的做法 它似乎仅受脚本内存限制的限制 快速测试后我得到了 128mb 的密钥 没问题 ini set memory lim
  • PHP 中的 XPath 删除 HTML 标签

    我在 PHP 中使用 XPath 来检索 HTML 文档的一部分 假设我的 HTML 文档如下所示 div a href some link address com Hello a p Some text here p div div p
  • 联系表 7 根据用户选择立即发送给多个联系人

    您好 我正在 WordPress 联系表单 7 中创建联系表单 如果用户选择 全部 我想立即向多个收件人发送电子邮件 我看过这个 但似乎没有记录您是否可以一次发送给多个收件人http contactform7 com selectable
  • Laravel“未定义方法 Illuminate\Database\Query\Builder::attach()”

    我正在尝试在 Laravel 4 中的数据库播种期间关联相关模型 根据文档here http laravel com docs eloquent inserting related models 我可以这样做 user gt roles g
  • XAMPP 中的根路径

    我遇到这个问题已经有一段时间了 并且广泛寻找答案但没有成功 img src images test jpg 从 根路径 在我的例子中是在 LAMP 中的生产中 获取图像 htdocs images test jpg 无论是从 htdocs
  • 选择 MYSQL 行,但将行转换为列,将列转换为行

    我想选择数据库中的所有行 但我希望它们按相反的顺序排列 意思是 我想使用第一列数据作为新实体 并将实体作为第一列 我想你明白我的意思 这是一个例子 id name marks 1 Ram 45 2 Shyam 87 to id 1 2 Na
  • 需要 php pdo 内爆数组并在 mysql 中插入多行

    基于this https stackoverflow com questions 4629022 how to insert an array into a single mysql prepared statement w php and
  • PHP file_get_contents() 和设置请求标头

    使用 PHP 是否可以发送 HTTP 标头file get contents 我知道您可以从您的php ini文件 但是 您是否还可以发送其他信息 例如HTTP ACCEPT HTTP ACCEPT LANGUAGE and HTTP CO
  • Drupal:*.api.php 中的 hook_ 函数是否被调用过?

    在 Drupal 7 中 每个核心模块都有一个 api php文件 其中 是模块的名称 例如 modules node node api php modules path path api php 这些文件有什么用 它们包含以以下开头的函数
  • PHP 性能有多好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是我最近看到的一篇文章的后续内容 该文章表明 PHP 性能很差 PHP 始终是瓶颈 我的服务器群 让我向您展示 PHP 整体性能 http t
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 使用 foreach 进行复杂的多维关联数组处理

    我不得不再次问这个问题 抱歉 但我在尝试处理这个数组时遇到了问题 我尝试了几种不同的方法 但没有一个是正确的 这是数组 Array search gt Array response gt Array errors gt number of
  • password_verify 哈希值与密码不匹配

    我使用下面的代码生成了密码哈希 hash password hash test PASSWORD BCRYPT 然后我使用 255 个字符将其存储在数据库中 然后我尝试使用比较器来测试登录 但失败了 它只允许我使用我之前刚刚生成的几行哈希登
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j

随机推荐

  • 我如何将媒体控制器和缩略图集成到textureview android

    我正在尝试在我的应用程序中的 recyclerview 适配器中创建一个视频播放选项我可以在textureview 中成功播放视频现在我正在尝试将媒体控制器和缩略图添加到textureview 视频中 我尝试过谷歌搜索 但我做不到 请需要帮
  • 我应该如何检测大型 C++ 项目中的编译时间瓶颈?

    我想减少大型 C 项目的编译时间 我尝试使用预编译头 接口等 但在继续之前 我想知道是否有任何工具可以帮助检测编译时间为何如此长 有人建议使用 pc lint 我会尝试一下 我应该如何检测大型 C 项目中不必要的 include 文件 ht
  • Selenium 不加载重定向页面

    我有一个工具可以加载网站 填写信息并保存结果 直到上周 它都运行良好 经过调试 我发现原因是因为站点URL 变成 了重定向 重定向的顺序如下所示 例如 网站网址是google com google com google com someth
  • Mongoose 使用 $in 查找数组

    Team find id in teamIds function err teamData console log teams name teamData 这段代码给了我们未定义的返回值 但是在 var teamIds 中是这样的 5456
  • 在 HTML 中选择输入和文本输入 - 使宽度相等的最佳方法?

    我有一个像这样的简单表格 仅用于说明目的
  • 如何重构抛出异常的函数?

    假设我正在重构这样的函数 def check ox Option Int Unit ox match case None gt throw new Exception X is missing case Some x if x lt 0 g
  • 在多对多关系中使用 Doctrine QueryBuilder 进行 NOT IN 查询

    在我的 Symfony2 项目中 我有两个实体 联系人 和 设置 具有多对多关系 ORM ManyToMany targetEntity AppBundle Entity Settings cascade persist ORM JoinC
  • 使用流来解密和解压缩以限制内存使用?

    我有一个非常大的 zip 文件 2 5gb 它是加密的 我无法将整个文件解密到内存中并解压缩以进行生产 所以我尝试使用流来限制使用的内存量 我已经连接了以下内容来执行此操作 为了清楚起见 省略了错误处理和流关闭 SecretKeySpec
  • Win 2008 r2 x64 服务器是否已安装 .net 3 sp1 软件包?

    和标题一样吗 我有一个带有上述操作系统的测试服务器 我的应用程序基于 net 3 5 我确实想知道 win 2008 r2 是否附带 net 3 5 的 Service Pack 1 它是否附带 net 3 5 sp1 系列更新 因为我下载
  • 我无法在操作创建者文件中使用 useHistory 函数

    我正在使用react router dom和redux 我在调度后使用history push 但它显 示错误 我希望用户在成功身份验证后导航到 使用谷歌 export const googleLogin gt async dispatch
  • 地址上方首次使用的单元格

    我正在 Excel 中创建预算 因此我有一些类别和子类别 子类别与其各自的父类别相比有 1 个单元格 子类别当然可以有自己的子类别 在 类别树 旁边的列中 我想打印 类别路径 Let s say I have the following t
  • 如何使用node.js生成excel文件?

    您好 我正在从数组中生成 excel 文件 但我没有成功 我正在使用 node js 工作 并且使用 npm 包生成 excel 文件 但我没有在 excel 文件中获取任何数据 excel 已生成 但未在我的文件中获取任何类型的数据 所以
  • 当 RStudio 中的 ioslides 的 type=HTML 时,调整 stargarzer 表的大小

    我刚开始使用 R Markdown 在 RStudio 中创建幻灯片演示文稿 我无法在网上找到任何可以解决我的具体问题的内容 这是close https stackoverflow com questions 15385696 how to
  • v8 中 Node.js 和 chrome 之间的区别

    镀铬版本 49 0 2623 110 m 节点 v5 10 0 这是我的代码 var a 0 function this a 1 this b 2 console log a console log a console log b 铬给出
  • dplyr 和 tidyr:将长格式转换为宽格式并排列列

    我正在创建一个shiny app用户将在其中上传包含多个变量的 csv 文件 使用dplyr 我会select前四个变量 如下所示 并将它们从长格式转换 DATA df lt read table text c Customer Rate
  • 更改绘图悬停框 R 的位置

    我想更改悬停框的位置plotly条形图 我希望它在栏上方弹出 而不是在左侧或右侧弹出 这可能吗 我一直在谷歌上搜索这个并盯着 Plotly R 参考页面几个小时 但没有运气 这是一个示例 library dplyr library plot
  • 在Oracle中使用SQL从3个表中选择数据

    我希望有人可以提供帮助 我是very这一切都是新的 我被困住了 我有 3 个表 我试图从中提取数据 顾客 custid 第一个 最后一个 积分俱乐部编号 调查编号 订单日期 订单总数 员工 empid 名字 姓氏 工资 销售额 销售日期 c
  • 简单的 REST URL 方案

    在我的网络应用程序中 我有一个user模型和一个journal and post模型 每个用户可以有多个日记 每个日记可以有多个帖子 下面是以 RESTful 方式表示这一点的最佳方式吗 profiles
  • EntityFramework Core 1.1.0 缺少 Include()? [复制]

    这个问题在这里已经有答案了 我正在使用 EntityFramework Core 1 1 0 我可以查询表并加载实体 但 Microsoft 的说明表明如果我想加载关系数据 我应该使用 Include 功能 https learn micr
  • php cURL 问题