PHP cURL 应用
对于做过数据采集的人来说,cURL一定不会陌生。虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_contents显得有点无能为力。因此,本文将为你介绍采集神器cURL的使用。
工具
火狐浏览器(FireFox) + Firebug
“工欲善其事,必先利其器。” 在分析案例之前,先让我们学习一下如何利用神器Firebug获取我们必要的信息。
使用F12打开Firebug,我们可以得到如图(一)界面:
箭头图标是“元素选择”工具,单击一次会高亮图标,同时,鼠标在页面内的移动会同时在HTML菜单中选定相应的内容,此时单击内容则表示选定了该元素,图标高亮取消。如图(二)所示:
- 控制台
JS里面的console.log系列函数的打印就是在这里输出。 - HTML
HTML内容,注意这里看到的不一定是采集要解析的内容,采集时候对内容的分析,一律以查看源码(Ctrl+U)为准,这里只是能快速定位元素的结构,然后再选择一个比较特殊的参照,在源码中定位相应的位置。
比如,你在HTML里面看到一个标签是<div id="demo" class="demo">Demo</div>
,但是你查看源码时候看到的内容可能是<div class="demo" id="demo">Demo</div>
,如果你对采集内容按照前者去做正则匹配,那么你会得不到结果。 - CSS
这里是CSS文件内容 - 脚本
这里是Javascript文件内容 - DOM
Dom节点内容 - 网络
每一个请求链接的数据,这里是我们采集要关注和分析的地方,它能够显示每一个请求的参数、请求头、Cookie数据等。在页面提交会刷新的情况下,需要使用保持,使得页面请求内容在刷新后仍然留着控制台中,如图(三)所示:
另外,火狐还有一款 Tamper data 扩展也能得到请求数据,必要时可以安装使用。 Cookies
Cookie数据
在图(一)中还看到下面有很多可选的小菜单项,其中保持是我们要关注的,当选择它的时候,即使提交表单刷新了页面,下面内容区域的数据还是会保留,这个对于分析提交数据特别关键。
总结
我们在分析采集请求的时候,主要关心“网络”菜单里的请求数据,必要时候使用“保持”以查看刷新页面的请求数据,请求前可以使用“清除”先清除下面的内容。
案例解析
一、简单的采集
这里所指的简单采集,是指一个单一页面GET请求的采集,它简单得即使通过file_get_contents函数也能轻松获得页面返回结果。
- 代码片段之file_get_contents
<code><?php $url = 'http://demo.zjmainstay.cn/php/curl/simple.html'; $content = file_get_contents($url); echo $content; </code></code>
- 代码片段之cURL
<code><?php $url = 'http://demo.zjmainstay.cn/php/curl/simple.html'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content; </code></code>
二、需要参数的采集
这种情况,页面请求需要传入一些参数,可以是GET请求,也可以是POST请求。这种情况的采集,使用file_get_contents外带一些参数还是可以实现的,但是这里我们将不再展示。
- 代码片段之cURL GET
这种请求,我们可以选择搜索引擎作为演示,比如我百度搜索一个词语“PHP cURL”,在输入回车后,我们会得到一个类似http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=PHP%20cURL
的链接,注意这里的链接可能不同浏览器、不同入口方式访问得到不一样结果,因此不必介意链接是否一样。通过输入多个关键词并观察链接,我们可以确定 wd 参数就是我们要传入的动态参数,而其他参数则可以不变,因此得到我们下面的采集代码。
<code><?php $keyword = 'PHP cURL'; $url = 'http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=' . urlencode($keyword); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content; </code></code>
有些时候,一些参数并不是必须的,这时候我们可以删掉它,比如上面的链接可以只保留http://www.baidu.com/s?ie=utf-8&wd=PHP%20cURL
,ie=utf-8 这个参数可能影响结果的编码,所以暂且留着它。就这样简单的代码,我们就可以采集到百度搜索的结果了。
- 代码片段之cURL POST
对于POST类型的请求,我们平时并不少见,比如有些搜索就是使用POST方式提交,这时候我们就需要使用POST类型来提交参数了。这个在PHP cURL里面有相应的参数:CURLOPT_POST 和 CURLOPT_POSTFIELDS , CURLOPT_POST 的设置可以指定当前提交是否为POST方式,CURLOPT_POSTFIELDS则用于设定提交的参数,可以是参数串,也可以是参数数组,比如:
<code>curl_setopt($ch, CURLOPT_POSTFIELDS, 'ie=utf-8&wd=PHP%20cURL'); 或 curl_setopt($ch, CURLOPT_POSTFIELDS, array( 'ie' => 'utf-8', 'wd' => 'PHP%20cURL', )); </code>
下面是我做的一个POST模拟搜索PHP POST 搜索,后端是使用了前面的百度关键词搜索,基本原理就是,客户端提交一个关键词到我服务器,我服务器使用该关键词请求百度的搜索,然后得到结果,返回到客户端。
如图(四)是利用Firebug对请求数据的分析,得到我们需要提交的请求链接和请求参数:
然后下面是我们的代码:
<code><?php $keyword = 'PHP cURL'; //参数方法一 // $post = 'wd=' . urlencode($keyword); //参数方法二 $post = array( 'wd' => urlencode($keyword), ); $url = 'http://demo.zjmainstay.cn/php/curl/search.php'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 curl_setopt($ch, CURLOPT_POST, 1); //发送POST类型数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //POST数据,$post可以是数组,也可以是拼接 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); var_dump($content); </code>
三、需要Referer的采集
对于一些程序,它可能判断来源网址,如果发现referer不是自己的网站,则拒绝访问,这时候,我们就需要添加CURLOPT_REFERER参数,模拟来路,使得程序能够正常采集。
<code><?php $keyword = 'PHP cURL'; //参数方法一 // $post = 'wd=' . urlencode($keyword); //参数方法二 $post = array( 'wd' => urlencode($keyword), ); $url = 'http://demo.zjmainstay.cn/php/curl/search_refer.php'; $refer = 'http://demo.zjmainstay.cn/'; //来路地址 $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 curl_setopt($ch, CURLOPT_REFERER, $refer); //来路模拟 curl_setopt($ch, CURLOPT_POST, 1); //发送POST类型数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //POST数据,$post可以是数组,也可以是拼接 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); var_dump($content); </code>
search_refer.php
的源码如下,做了简单的Referer判断拦截:
<code><?php if(empty($_POST['wd'])) { exit('Deny empty params.'); } //Referer判断 if(stripos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false) { exit('Deny'); } $keyword = addslashes(trim(strip_tags($_POST['wd']))); $url = 'http://www.baidu.com/s?ie=utf-8&wd=' . urlencode($keyword); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content; </code></code>
四、需要cookie支持的采集
对于模拟登录的应用,单单提交参数和模拟来路并不能解决问题,这时候我们就需要保存或者提交相应的Cookie参数,这个在PHP cURL里面也提供了相应的参数:
CURLOPT_COOKIE: 直接使用字符串方式提交cookie参数
CURLOPT_COOKIEFILE: 使用文件方式提交cookie参数
CURLOPT_COOKIEJAR: 保存提交后反馈的cookie数据
下面是PHP100的模拟登录示例:
<code><?php header("content-Type: text/html; charset=UTF-8"); $cookie_file = tempnam('./temp', 'cookie'); $login_url="http://bbs.php100.com/login.php"; $post_fields="cktime=36000&step=2&pwuser=username&pwpwd=password"; //提交登录表单请求 $ch=curl_init($login_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); //存储提交后得到的cookie数据 curl_exec($ch); curl_close($ch); //登录成功后,获取bbs首页数据 $url="http://bbs.php100.com/index.php"; $ch=curl_init($url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file); //使用提交后得到的cookie数据做参数 $contents=curl_exec($ch); curl_close($ch); //转码显示 echo iconv('gbk', 'UTF-8', $contents); </code></code>
五、压缩网页采集(gzip)
有些没有接触过压缩页面的朋友估计会在这里被坑死,因为他们会发现采集回来的内容是乱码,并且无论使用iconv还是强大的mb_convert_encoding都无法还原数据,然后又没有概念,各种抓狂却找不到方法,哈哈,我曾经也是这样~
如图(五)是乱码表现形式:
还好最后功夫不负有心人,还是找到了,它就是CURLOPT_ENCODING参数。
比如,采集搜狐的新闻时候就遇到gzip压缩问题,下面是示例:
<code><?php $url = 'http://news.sohu.com/'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content; </code></code>
手册说明:支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。
后面一句表明,使用curl_setopt($ch, CURLOPT_ENCODING, "");
也是可以的,但是不能不加这个参数。
六、SSL链接的采集
有些请求链接是https类型的,这时候使用cURL采集可能会失败,这时候,我们可以使用 var_dump(curl_error($ch));
的方法打印错误提示,然后根据错误提示查找相应的解决方案。比如SSL错误常见提示:SSL certificate problem: unable to get local issuer certificate
,这时候,我们就需要利用参数:CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 来禁用SSL证书的验证,我尝试过只使用CURLOPT_SSL_VERIFYPEER参数禁用失败,所以大家最好同时使用两个参数。
下面是代码示例:
<code><?php $searchStr = 'RC376981638HK'; $post = 'accion=LocalizaUno&numero='.$searchStr.'&ecorreo=&numeros='; $url = 'https://aplicacionesweb.correos.es/localizadorenvios/track.asp'; $ch = curl_init($url); //初始化curl curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 curl_setopt($ch, CURLOPT_POST, 1); //发送POST类型数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //POST数据,$post可以是数组,也可以是拼接参数串 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //SSL 报错时使用 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //SSL 报错时使用 $contents = curl_exec($ch); //执行并存储结果 // var_dump(curl_error($ch)); //获取失败是使用(采集错误提示) curl_close($ch); echo $contents; </code></code>
七、代理采集
大家都知道,国内存在万恶的墙,所以,假如我们需要获取某些被墙数据时,就需要用到国外代理服务器;又或者我们需要采集大量数据时,需要不断切换IP,也会用到代理。
使用代理在PHP cURL里面有几个相对应的参数:CURLOPT_PROXY、CURLOPT_PROXYPORT 和 CURLOPT_PROXYUSERPWD,还有另外几个,这里不列举。
CURLOPT_PROXY 指定代理IP参数
CURLOPT_PROXYPORT 指定代理端口参数
CURLOPT_PROXYUSERPWD 指定需要验证的代理的账号密码,"[username]:[password]"格式的字符串
关于代理账号获取,大家自己发挥,我这里提供网上搜索到的一个列表:cURL 高匿代理
下面是代理采集示例:
<code><?php $url = 'http://demo.zjmainstay.cn/php/curl/dump_ip.php?t=' . time(); echo "本地IP:" . file_get_contents($url) . "\n伪造IP:"; $ip = '183.224.1.116'; $port = '80'; //伪造请求头参数,如果是高匿代理这里不需要提供 $header = array( 'X-FORWARDED-FOR: ' . $ip, 'CLIENT-IP: ' . $ip, ); $ch = curl_init($url); //初始化curl curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_PROXY, $ip); curl_setopt($ch, CURLOPT_PROXYPORT, $port); $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content; </code></code>
八、 多线程采集
对于大量采集工作,为了提高采集效率,使用PHP cURL提供的多线程采集是必不可少的。手册上提供的多线程采集例子好像都不太好用,我刚开始也从里面测试了几个例子,但是发现都是执行卡死,根本无法执行完成,前几天突然又测试了一下,然后发现curl_multi_info_read函数下面的Example #1是可以执行的,它的内容在$res
上,但是没有打印出来,而且雅虎的请求比较慢,会卡住,前面两个链接都能正常返回。
不过,还好当时的例子不好用,然后我经过搜索找到了一个很厉害的项目,CurlMulti ,它对PHP cURL Multi 进行了一个良性扩展的封装,能够很好地提供采集支持。
关于CurlMulti的使用我就不多介绍,官网上面提供了demo,使用过程有技术难题可以直接加入Q群讨论,作者@Ares 和其他的采集大牛都会提供技术解答帮助。
下面是PHP cURL Multi的一个简单示例:
<code><?php $urls = array( "http://demo.zjmainstay.cn/php/curl/curl_multi_1.php", "http://demo.zjmainstay.cn/php/curl/curl_multi_2.php", ); $mh = curl_multi_init(); foreach ($urls as $i => $url) { $conn[$i] = curl_init($url); curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1); //不直接输出结果 curl_multi_add_handle($mh, $conn[$i]); } $active = null; $res = array(); do { $status = curl_multi_exec($mh, $active); $info = curl_multi_info_read($mh); if (false !== $info) { //采集信息处理 $res[] = array( 'content' => curl_multi_getcontent($info['handle']), 'info' => $info, ); curl_close($info['handle']); } } while ($status === CURLM_CALL_MULTI_PERFORM || $active); curl_multi_close($mh); var_dump($res); </code>
九、302跳转(301跳转)
对于一些应用,比如模拟登录,如果遇上302跳转,会导致cookie丢失而使得模拟登录失败,请求现象如图(六)所示:
这个时候,可以使用:
<code>curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); </code>
关于CURLOPT_FOLLOWLOCATION,手册说明是:
<code>启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。</code>
我个人理解,通俗点讲就是后面的跳转会继续跟踪访问,而且cookie在header里面被保留了下来。
十、模拟上传文件
在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:
<code>全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串类似'para1=val1¶2=val2&...'或使用一个以字段名为键值,字段数据为值的数组。如果value是一个数组,Content-Type头将会被设置成multipart/form-data。</code>
对于上传文件,这句话包含两个信息:
<code>1. 要上传文件,post的数据参数必须使用数组,使得Content-Type头将会被设置成multipart/form-data。 2. 要上传文件,在文件名前面加上@前缀并使用完整路径。</code>
因此,模拟文件上传可以按照如下实现:
<code>//上传D盘下的test.jpg文件,文件必须存在,否则curl处理失败且没有任何提示 $data = array('name' => 'Foo', 'file' => '@d:/test.jpg'); $ch = curl_init('http://localhost/upload.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch);</code>
本地测试的时候,在upload.php文件中打印出\\(_POST和\$_FILES即可验证是否上传成功,如下: ``` _POST);
print_r($_FILES);
<code>输出结果类似:</code>
Array ( [name] => Foo ) Array ( [file] => Array ( [name] => test.jpg [type] => application/octet-stream [tmp_name] => D:\xampp\tmp\php2EA0.tmp [error] => 0 [size] => 139999 ) )
<code> 关于CURLOPT_POSTFIELDS的赋值,另外补充一句描述:</code>
传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
<code>即:</code>
curl_setopt(\(ch, CURLOPT_POSTFIELDS, 'param1=val1¶m2=val2&...'); 和 curl_setopt(\)ch, CURLOPT_POSTFIELDS, array('param1' => 'val1', 'param2' => 'val2', ...));
<code>相当于html的form表单中:</code>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











24일 이 사이트의 소식에 따르면 지난 6월 21일 HDC2024 화웨이 개발자 컨퍼런스 기조연설에서 화웨이 터미널 BG 소프트웨어 부문 사장 공티(Gong Ti)가 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어를 공식 발표했다. 이 언어는 5년 동안 개발되었으며 이제 개발자 미리보기로 제공됩니다. Huawei의 공식 개발자 웹사이트는 이제 개발자가 프로그래밍 언어를 시작하고 이해할 수 있도록 Cangjie 프로그래밍 언어에 대한 공식 소개 튜토리얼 비디오를 출시했습니다. 이 튜토리얼에서는 사용자가 Cangjie를 경험하고, Cangjie를 배우고, Cangjie를 적용하는 방법을 안내합니다. 여기에는 Cangjie 언어를 사용하여 파이를 추정하고, 2024년 각 달의 줄기 및 가지 규칙을 계산하고, Cangjie 언어로 이진 트리를 표현하는 N 방법을 확인하고, 열거형을 사용하는 방법이 포함됩니다. 대수 계산을 구현하기 위한 유형, 인터페이스 및 확장을 사용한 신호 시스템 시뮬레이션, Cangjie 매크로를 사용한 새로운 구문 등이 있습니다. 이 사이트에는 튜토리얼 액세스 주소가 있습니다: ht

이 사이트는 오늘 오후 HDC2024 화웨이 개발자 컨퍼런스에서 화웨이 터미널 BG 소프트웨어 부서 사장 Gong Ti가 화웨이가 자체 개발한 Cangjie 프로그래밍 언어를 공식 발표하고 HarmonyOSNEXT Cangjie 언어의 개발자 프리뷰 버전을 출시했다고 6월 21일 보도했습니다. 화웨이가 Cangjie 프로그래밍 언어를 공개적으로 출시한 것은 이번이 처음입니다. Gong Ti는 "2019년에 Cangjie 프로그래밍 언어 프로젝트가 Huawei에서 탄생했습니다. 5년간의 R&D 축적과 막대한 R&D 투자 끝에 마침내 오늘 글로벌 개발자를 만났습니다. Cangjie 프로그래밍 언어는 현대적인 언어 기능, 포괄적인 컴파일 최적화 및 런타임 구현을 통합합니다. 즉시 사용 가능한 IDE 도구 체인 지원은 개발자에게 친숙한 개발 경험과 뛰어난 프로그램 성능을 제공합니다. "보고서에 따르면 Cangjie 프로그래밍 언어는 모든 시나리오 인텔리전스 도구입니다.

6월 21일 이 사이트의 소식에 따르면 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어가 오늘 공식적으로 공개됐고, 공식적으로는 하모니OSNEXT 창힐(HarmonyOSNEXT Cangjie) 언어 개발자 프리뷰 베타 모집 개시를 발표했다. 이 업그레이드는 개발자가 Cangjie 언어를 사용하여 HarmonyOSNext 애플리케이션을 개발, 디버깅 및 실행할 수 있도록 Cangjie 언어 SDK, 개발자 가이드 및 관련 DevEcoStudio 플러그인을 제공하는 개발자 미리 보기 버전에 대한 얼리 어답터 업그레이드입니다. 등록 기간: 2024년 6월 21일 - 2024년 10월 21일 신청 요구 사항: 이번 HarmonyOSNEXT Cangjie 언어 개발자 미리 보기 베타 모집 이벤트는 다음 개발자에게만 공개됩니다. 1) Huawei 개발자 연합 인증에 실명이 입력되었습니다. 2) H를 완료하세요.

6월 22일 이 사이트의 뉴스에 따르면 화웨이는 어제 화웨이가 자체 개발한 프로그래밍 언어인 창힐(Cangjie)을 전 세계 개발자들에게 선보였습니다. 이는 Cangjie 프로그래밍 언어가 최초로 공개된 것입니다. 이 사이트의 문의에 따르면 천진대학교와 베이징 항공우주대학교는 화웨이의 '창힐' 연구 개발에 깊이 관여한 것으로 나타났습니다. 천진대학교: Cangjie 프로그래밍 언어 컴파일러 천진대학교 지능컴퓨팅학과의 소프트웨어 엔지니어링 팀은 Huawei Cangjie 팀과 협력하여 Cangjie 프로그래밍 언어 컴파일러의 품질 보증 연구에 깊이 참여했습니다. 보고서에 따르면 Cangjie 컴파일러는 Cangjie 프로그래밍 언어와 공생하는 기본 소프트웨어입니다. Cangjie 프로그래밍 언어의 준비 단계에서는 이에 맞는 고품질 컴파일러가 핵심 목표 중 하나가 되었습니다. Cangjie 프로그래밍 언어가 발전함에 따라 Cangjie 컴파일러는 지속적으로 업그레이드되고 개선되고 있습니다. 지난 5년간 천진대학교

HDC2024 화웨이 개발자 컨퍼런스 전인 6월 21일 이 사이트의 소식에 따르면 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어가 공식 공개됐고 창힐 공식 웹사이트가 현재 온라인 상태다. 공식 웹사이트 소개에 따르면 Cangjie 프로그래밍 언어는 "기본 지능, 자연스러운 모든 시나리오, 고성능 및 강력한 보안"에 중점을 둔 모든 시나리오 지능을 위한 차세대 프로그래밍 언어입니다. Hongmeng 생태계에 통합하여 개발자에게 좋은 프로그래밍 경험을 제공하세요. 본 사이트에 첨부된 공식 홈페이지에는 AgentDSL이 내장된 네이티브 지능형 프로그래밍 프레임워크, 자연어 및 프로그래밍 언어의 유기적 통합, 단순화된 기호 표현, 자유로운 패턴 조합, 다양한 지능형 애플리케이션 개발 지원 등이 소개되어 있습니다. 모든 장면에 대한 본질적으로 가볍고 확장 가능한 런타임, 모듈식 계층 설계, 메모리가 아무리 작더라도 모든 시나리오 도메인 확장을 수용할 수 있습니다.

6월 21일 뉴스에 따르면 오늘 오후 화웨이 개발자 컨퍼런스 2024가 공식적으로 개최될 예정입니다. 앞서 유청동이 공개한 계획에 따르면 '순혈 홍몽' 하모니 OS NEXT는 오늘 오후 공식 베타 버전이 발표될 예정이며, 일반 소비자도 '순혈 하모니'를 시험해 볼 수 있다. 보도에 따르면 지원되는 첫 번째 휴대폰은 Mate60 시리즈와 Pura70 시리즈입니다. "순수한 Hongmeng"인 HarmonyOSNEXT가 기존 Linux 커널과 AOSP Android 오픈 소스 코드를 제거하고 전체 스택을 자체적으로 개발했다는 점은 주목할 가치가 있습니다. Sina Technology의 최신 보고서에 따르면 Huawei는 Hongmeng 생태계의 마지막 링크도 완성하고 세계에서 입지를 확장할 예정입니다.

2023년 3월 14일 ChatGLM-6B가 출시된 이후 GLM 시리즈 모델은 광범위한 관심과 인정을 받았습니다. 특히 ChatGLM3-6B가 오픈소스로 공개된 이후 개발자들은 Zhipu AI가 출시하는 4세대 모델에 대한 기대감이 가득합니다. 이러한 기대는 마침내 GLM-4-9B의 출시로 완전히 충족되었습니다. GLM-4-9B의 탄생 소형 모델(10B 이하)에 더욱 강력한 기능을 제공하기 위해 GLM 기술팀은 약 반년 만에 새로운 4세대 GLM 시리즈 오픈 소스 모델인 GLM-4-9B를 출시했습니다. 탐구. 이 모델은 정확성을 보장하면서 모델 크기를 크게 압축하고 추론 속도가 더 빠르고 효율성이 높습니다. GLM 기술팀의 탐색은 아직 이루어지지 않았습니다.

51CTO Technology Stack(WeChat ID: blog51cto)에서 제작 Mistral이 첫 번째 코드 모델 Codestral-22B를 출시했습니다! 이 모델의 놀라운 점은 많은 코드 모델이 무시하는 Swift 등을 포함하여 80개 이상의 프로그래밍 언어로 훈련되었다는 것 뿐만이 아닙니다. 그들의 속도는 정확히 동일하지 않습니다. Go 언어를 사용하여 "게시/구독" 시스템을 작성해야 합니다. 여기 GPT-4o가 출력되고 있는데 Codestral이 종이를 너무 빨리 넘겨서 보기 힘들 정도예요! 해당 모델은 출시된 지 얼마 되지 않아 아직 공개 테스트를 거치지 않았습니다. 하지만 Mistral 담당자에 따르면 Codestral은 현재 가장 성능이 좋은 오픈 소스 코드 모델입니다. 사진에 관심 있는 친구들은 다음으로 이동할 수 있습니다. - 얼굴을 안아주세요: https
