php用curl在已有后台账号密码情况下爬取后台数据

本文介绍了如何在已知后台账号密码的情况下,使用PHP的curl库进行模拟登录,以抓取后台数据。首先,通过浏览器登录并分析请求数据包。如果不清楚密码加密方式,可以复制登录后的cookies和token进行模拟。当cookies或token过期时,需手动重新登录获取。若了解加密方式,先用curl进行登录验证,获取cookies和token,再抓取所需接口数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先用谷歌浏览器登录后台,登陆成功后F12-network抓取需要数据包进行分析

2.分析好规则后用curl模拟参数提交对应的接口

情况1:不知道密码加密方式且无法逆向的情况直接复制登陆后的cookies和token来模拟登陆,然后直接去抓对应的接口,此方法需要在cookies或者token过期后手动登陆重新获取

$url="https://www.xxx.com/xx/xx/xx?";
$param = [
    '参数1' => '',
    '参数2' => '',
    '参数3' => '',
];
$http_param = http_build_query($param);
$url=$url.$http_param;
$header=array(
    'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',
    'Connection:keep-alive',
    //登陆获取的cookie
    'Cookie:xxxxxxx',
    //登录获取的token
    'token:xxxxxx'

);
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
    var_dump(curl_error($curl));
    return FALSE;
}
curl_close($curl); // 关闭CURL会话

情况2:知道密码加密方式的情况下先curl提交参数验证登录拿到cookie和token再用curl抓接口数据

$url="https://www.xxx.com/xx/xx/xx?"; //登录验证接口

$data=array(
'username'=>'',
'password'=>'',
'其他参数1'=>'',
'其他参数2'=>'',
);
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
    var_dump(curl_error($curl));
    return FALSE;
}
curl_close($curl); // 关闭CURL会话;

抓接口数据参照1

### 使用虫实现Bilibili登录方法 为了通过虫实现Bilibili的自动登录功能,通常需要模拟用户的登录过程。这涉及到发送带有用户名和密码的POST请求到Bilibili的服务器,并处理返回的数据来验证登录状态。 #### 准备工作 在开始之前,确保安装必要的Python库,如`requests`用于HTTP请求管理以及`selenium`如果计划自动化浏览器操作: ```bash pip install requests selenium ``` 对于更复杂的场景,比如验证码识别,则可能还需要额外的图像处理或机器学习库支持。 #### 获取登录页面表单详情 利用Chrome浏览器开发者工具分析登录界面中的HTML源码,找到提交账户信息的具体URL路径及所需参数列表[^2]。这些细节对于构建正确的POST请求至关重要。 #### 构建并发送登录请求 下面是一个简单的例子展示如何使用`requests.Session()`对象保持会话连接,在其中封装了向指定端点发出包含认证凭证的POST调用的过程: ```python import requests login_url = 'https://passport.bilibili.com/login' session = requests.session() payload = { "username": "your_username", "password": "your_password" } response = session.post(login_url, data=payload) if response.status_code == 200: print('Login successful.') else: print(f'Failed to login with status code {response.status_code}.') ``` 需要注意的是实际应用中可能会遇到更多挑战,例如动态加载的内容、CSRF令牌校验或是图形验证码等问题都需要特别考虑。 #### 处理后续交互 一旦成功登录后,可以继续使用同一个Session实例来进行其他API接口访问或者网页抓取活动。此时应该已经获得了有效的cookie,它允许程序代表已授权用户执行进一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值