问题:终端使用curl请求url时返回为空可能是网站反爬机制限制为windows 或mac端才能进行数据获取。
解法:可通过设置头文件解决。
curl -a aa.html “https://www.ip138.com/iplookup.asp?ip=58.217.246.123&action=2” -H ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36’ -H ‘Accept-Language: zh-CN,zh;q=0.9,en;q=0.8’
1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码。
乱码:curl www.genecode.com |more
乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | more
不乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | gunzip | more
小总:
也就是说在curl后面加上Accept-Encoding:gzip,再用gunzip解压缩,则基本上可以保存数据不乱码。
2.GBK或者UTF8汉字之类的乱码
iconv命令是运行于linux平台的文件编码装换工具。当我们在linux系统shell下通过curl命令或者wget命令获取一个网页的源代码,当网页的编码与当前操作系统坏境的设置的编码不同时,就会发现网页中有很多乱码。如在网页"meta"标签"charset"属性值设置为"gb2312"的http://www.baidu.com百度首页,在系统坏境变量"
LANG"值为"en_US.UTF-8"的linux系统即会产生中文乱码现象。这时我们可以尝试使用iconv命令进行编码装换,让中文不在是乱码。如下命令是处理百度在系统坏境变量"
L
A
NG
"
值为
"
e
n
U
S
.
U
TF
−
8"
的
l
in
ux
系统即会产生中文乱码现象。这时我们可以尝试使用
i
co
n
v
命令进行编码装换,让中文不在是乱码。如下命令是处理百度在系统坏境变量
"
LANG"值为"en_US.UTF-8"的linux系统乱码的问题的解决方案之一:
curl “https://www.ip138.com/iplookup.asp?ip=58.217.246.123&action=2” -H ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36’ -H ‘Accept-Language: zh-CN,zh;q=0.9,en;q=0.8’|iconv -fgb2312 -t utf-8 > aa.html
当然,你也通过改变系统坏境变量与百度首页的"charset"值一致,也可以解决此乱码问题,如下命令:
set LANG=“gb2312”
export LANG
curl http://www.google.com
iconv命令的详细语法:
iconv [选项…] [文件…]
选项:
-f 输入编码 (兼容中文通常为gb18030或gb2312)
-t 输出编码
-l 列出所有已知的编码
-o 输出文件
curl
无
输出
返回
空
白或者null问题
解决
如果发现标题类似问题,很有可能是因为ssl证书问题导致只需要在
curl
方法
中加入以下代码即可:
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYPEER, false);//禁止
cURL
验证对等证书
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYHOST, false);//是否检测
服务器
的域名与证书上的是否一致
赠送个比较全的
curl
代码
*
CURL
请求
函数:支持POST及基本header头信息
网上查找了一下,由于采用https协议,一定要加入以下两句
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYPEER, false); //不验证证书下同
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYHOST, false); //
这样就能获取到了
转载于:https://www.cnblogs.com/Basu/p/7967352...
php
curl
返回
空
和
返回
乱码
情况处理
返回
空
字符串的情况
如果
curl
请求
返回
空
字符串,尝试用file_get_contents访问,如果可以
返回
正确的
内容
,那么多半是
请求
的地址
返回
302重定向了。此
时
只需加
curl
_setopt($ch,
CURL
OPT_FOLLOWLOCATION, 1);
即可
解决
。
返回
乱码
的情况
如果
curl
返回
乱码
,大多数情况是因为
返回
的数据被压缩了,没有正确的解码,此
时
只需加
$
curl
->setOpt(
CURL
OPT_ENCODING,'');
即可
解决
。
CURL
发送POST
请求
curl
-H "Content-Type: application/json" -X POST -d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' "http://192.168.0.1:8001/test"
参数
内容
-H
请求
头
-d POST
内容
-X
请求
协议
curl
是常用的命令行工具,用来
请求
Web
服务器
。它的名字就是客户端(client)的
URL
工具的意思。它的功能非
有
时
候用
curl
命令行下载
为空
的情况,如:
zhuliting@zhuliting:~$
curl
'http://m.youku.com' -o youku.html
% Total % Received % Xferd Average Speed Time Time Time Current
回答: 要在
Linux
中
使用
curl
命令后台运行,可以
使用
以下命令:
curl
-s http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428\&b=39.90923 &
在命令的末尾加上`&`符号可以将
curl
命令放在后台运行。这样,
curl
命令将在后台发送
请求
并接收响应,而不会阻塞
终端
。\[2\]
#### 引用[.reference_title]
- *1* *2* [
linux
下
使用
curl
访问多参数
url
](https://blog.csdn.net/fgszdgbzdb/article/details/73556802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [
linux
常用命令 Tomcat启停 zip文件解压与压缩 修改权限 前后台运行 删除
乱码
文件名](https://blog.csdn.net/chenhao0568/article/details/74332302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]