淘宝买家秀、PHP版本-sign值的生成

很早之前发到知乎上边的!!!感兴趣的可以看看

网上找了很多关于买家秀sign值的生产、找到的是Python版本的!

由于本人擅长的PHP语言,这必须得翻译成PHP版本的呀!!

那就来吧、用到的Laravel8框架、类库: HTTP客户端库( guzzlehttp/guzzle )

一、安装HTTP客户端库:

composer require guzzlehttp/guzzle

二、分析请求参数、接口:

接口地址:https://acs.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/
appKey: 12574478
t: 1560094920983
sign: 9fd51773ab6c80205f4a0c2f97ca14c6
api: mtop.taobao.social.feed.aggregate
v: 1.0
timeout: 300000
timer: 300000
type: jsonp
dataType: jsonp
callback: mtopjsonp1
data: {"params":"{\"nodeId\":\"\",\"sellerId\":\"50852803\"}","cursor":"1","pageNum":"1","pageId":5703,"env":"1"}

其中 t (就是一个时间戳而已) 和 sign是动态生成的。其他都为固定字段!

t 我封装成一个方法,直接调用即可:

/**
* @copyright 获取时间戳
* @Author 不问归期_:2019-12-16
* @param boolean $digits [description]
* @return [type] [description]
*/
public function getTimestamp($digits = false)
{
$digits = $digits > 10 ? $digits : 10;
$digits = $digits - 10;
if ((!$digits) || ($digits == 10)) {
return time();
} else {
return number_format(microtime(true), $digits, '', '');
}
}

sign 是通过cookies中的参数生成的、直接上代码吧

$url = 'https://acs.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/?appKey=12574478';
$client = new Client(array(
'cookies' => true
));
$response = $client->request('GET', $url);
$Cookie = $response->getHeader('Set-Cookie');
$_m_h5_tk = Str::before(Str::after($Cookie[1], '_m_h5_tk='), '_');
$_m_h5_tk_enc = Str::before(Str::after($Cookie[2], '_m_h5_tk_enc='), ';');
$times = $this->getTimestamp(13);
$data = '{"params":"{\"sellerId\":\"50852803\",\"pagination\":{\"pageNum\":\"1\",\"pageSize\":\"6\"}}","pageId":5703}';
//$cookie = preg_replace('/\s/', '', '_m_h5_tk=' . $_m_h5_tk . '; _m_h5_tk_enc=' . $_m_h5_tk_enc);
$sign = md5($_m_h5_tk . '&' . $times . '&12574478&' . $data);

 

 

这两个动态参数都能获取了、接下来就是请求参数拼接 并 请求数据 了!

$url = $url . '&t=' . $times . '&sign=' . $sign . '&data=' . $data;
$res = $client->request('GET', $url);
$res = $res->getBody()->getContents();
dump($res);

成功!!

三、一些细节处理

我们看data这个参数并分析一下

$data = '{"params":"{\"sellerId\":\"50852803\",\"pagination\":{\"pageNum\":\"1\",\"pageSize\":\"6\"}}","pageId":5703}';

其中sellerId 就是卖家秀id 、pageNum 就是 页数(就是获取第几页的数据) 、pageSize 就不用多说了吧.(这里不说了,不懂的就自行测试吧) data这个参数主要的就是这三个参数了.

优化后的代码:

$sellerId = $request->input('sellerId');
$pageNum = $request->input('pagenum', 1);
$pageSize = $request->input('pagesize', 5);
$url = 'https://acs.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/?appKey=12574478';
$client = new Client(array(
'cookies' => true
));
$response = $client->request('GET', $url);
$Cookie = $response->getHeader('Set-Cookie');
$_m_h5_tk = Str::before(Str::after($Cookie[1], '_m_h5_tk='), '_');
$_m_h5_tk_enc = Str::before(Str::after($Cookie[2], '_m_h5_tk_enc='), ';');
$times = $this->getTimestamp(13);
$data = '{"params":"{\"sellerId\":\"' . $sellerId . '\",\"pagination\":{\"pageNum\":\"' . $pageNum . '\",\"pageSize\":\"' . $pageSize . '\"}}","pageId":5703}';
//$cookie = preg_replace('/\s/', '', '_m_h5_tk=' . $_m_h5_tk . '; _m_h5_tk_enc=' . $_m_h5_tk_enc);
$sign = md5($_m_h5_tk . '&' . $times . '&12574478&' . $data);
$url = $url . '&t=' . $times . '&sign=' . $sign . '&data=' . $data;
$res = $client->request('GET', $url);
$res = $res->getBody()->getContents();
dump($res);

好了!!!以上就是全部代码、、

Py版的地址:爬取淘宝买家秀,sign值的生成_这个面它又长又宽-CSDN博客

四、最后附上完整代码:

<?php
namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
class TaobaoController
{
/**
* @copyright 淘宝买家秀
* @Author 不问归期_:2019-10-07
* @return [type] [description]
*/
public function index(Request $request)
{
$sellerId = $request->input('sellerId');
$pageNum = $request->input('pagenum', 1);
$pageSize = $request->input('pagesize', 5);
$url = 'https://acs.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/?appKey=12574478';
$client = new Client(array(
'cookies' => true
));
$response = $client->request('GET', $url);
$Cookie = $response->getHeader('Set-Cookie');
$_m_h5_tk = Str::before(Str::after($Cookie[1], '_m_h5_tk='), '_');
$_m_h5_tk_enc = Str::before(Str::after($Cookie[2], '_m_h5_tk_enc='), ';');
$times = $this->getTimestamp(13);
$data = '{"params":"{\"sellerId\":\"' . $sellerId . '\",\"pagination\":{\"pageNum\":\"' . $pageNum . '\",\"pageSize\":\"' . $pageSize . '\"}}","pageId":5703}';
//$cookie = preg_replace('/\s/', '', '_m_h5_tk=' . $_m_h5_tk . '; _m_h5_tk_enc=' . $_m_h5_tk_enc);
$sign = md5($_m_h5_tk . '&' . $times . '&12574478&' . $data);
$url = $url . '&t=' . $times . '&sign=' . $sign . '&data=' . $data;
$res = $client->request('GET', $url);
$res = $res->getBody()->getContents();
dump($res);
}
/**
* @copyright 获取时间戳
* @Author 不问归期_:2019-12-16
* @param boolean $digits [description]
* @return [type] [description]
*/
public function getTimestamp($digits = false)
{
$digits = $digits > 10 ? $digits : 10;
$digits = $digits - 10;
if ((!$digits) || ($digits == 10)) {
return time();
} else {
return number_format(microtime(true), $digits, '', '');
}
}
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
  1. 1 风吹一夏 DP龙猪/Swei水/Rays陈袁
  2. 2 辞.九门回忆 解忧草
  3. 3 多幸运 韩安旭
  4. 4 冬天的秘密 张家旺
  5. 5 I Want You To Know (Hella x Pegato Remix) мардан муталипзаев/MER BRO
  6. 6 Someone You Loved (Future Humans Remix) Lewis Capaldi
  7. 7 New Boy 房东的猫/陈婧霏
  8. 8 你走以后1.0 王恩信Est/二胖u(王訫)
  9. 9 虎二
  10. 10 Ohlala Mr. DA-NOS
  11. 11 Until We Die WATEVA/Next to Neon
  12. 12 大风吹 王赫野
  13. 13 再次见到你(翻自 金娜英/Mad Clown) 闫嘉辉
  14. 14 Talk Love(翻自 K.will) Shengbo
  15. 15 Ơ sᴀᴏ ʙé ᴋʜôɴɢ ʟᴀᴋ Etrivi/VSKIY
  16. 16 分分钟需要你 林忆莲
  17. 17 I'll Be Back Sam Feldt/ROOKIES
  18. 18 Feeling Me (The Distance & Igi Remix) Max Oazo
  19. 19 是想你的声音啊(DJ完整版) 傲七爷
  20. 20 Sleep, For The Weak! (Lost Frequencies Remix) Lea Rue/Lost Frequencies
  21. 21 Would You Wait for Me (Arty Violin Remix) Max Oazo/Arty Violin
  22. 22 想见你想见你想见你 八三夭
  23. 23 Ngây Thơ (Orbit Remix) ᴏʀʙɪᴛ
  24. 24 Morsmordre Crazy Donkey
  25. 25 Tonight (Best You Ever Had) John Legend/Ludacris
  26. 26 Arfe丶
  27. 27 LOSER (Live) BIGBANG
  28. 28 BANG BANG BANG -JP Ver.- BIGBANG
  29. 29 FANTASTIC BABY BIGBANG
  30. 30 HaruHaru -Japanese ver.- BIGBANG
  31. 31 Blue BIGBANG
  32. 32 뱅뱅뱅 (BANG BANG BANG) (Live) BIGBANG
  33. 33 孤身 徐秉龙
  34. 34 Stranger Things (Alan Walker Remix) Kygo/OneRepublic/Alan Walker
  35. 35 Reality [ANR054] (Extended Mix) Lost Frequencies/Janieck
  36. 36 Ghost (Joe Stone Remix) Au/Ra/Alan Walker/Joe Stone
  37. 37 星辰大海 黄霄雲
  38. 38 Dynamite (Dub Mix) Suprafive
  39. 39 让我欢喜让我忧 浮笙
  40. 40 Insomnia (Up All Night Mix) Craig David
  41. 41 你走以后 王恩信Est/二胖u(王訫)
  42. 42 盗将行 花粥/马雨阳
  43. 43 世间美好与你环环相扣 柏松
  44. 44 别想他(way back home中文remix) 坤木Joymo/林小希
  45. 45 That Girl Olly Murs
  46. 46 最近 (正式版) 王小帅
  47. 47 In My Blood The Veronicas
  48. 48 Flames David Guetta/Sia
  49. 49 根本你不懂得爱我(女生版) 梁爽凉爽
  50. 50 云烟成雨 房东的猫
  51. 51 Sahara Hensonn
  52. 52 与你有关的秘密 张新成
  53. 53 嘿,小孩 胡莎莎
  54. 54 M八七 米津玄師
  55. 55 旅人书 什么都浪漫
  56. 56 그렇게 넌 나의 비밀이 되었고(My secret, My everything) Sondia/Vincent Blue
  57. 57 그림자 Hanhae/KISSES
  58. 58 星路 (みち) 玉置浩二
  59. 59 Here We Are 金必
  60. 60 알 것도 같아 홍이삭
  61. 61 三十三 陈祉希
  62. 62 照耀星河 周深
  63. 63 纯白 敖子逸/黄灿灿
  64. 64 你是最温暖的光 龚子婕JessieG
  65. 65 温软人间 HITA
  66. 66 树林和秘密 袁野
  67. 67 일종의 고백 (Male Ver.) 郭真言
  68. 68 不完美 魏大勋
  69. 69 爱情诀窍 敖子逸
  70. 70 画笔 徐紫茵
  71. 71 手心的微光 贝勒
  72. 72 彪悍情歌 TNK
  73. 73 我的未来不是梦 魏大勋/龚子婕JessieG/贝勒/徐鹏/Felicia蔡菲凡/廉山/刘志远
  74. 74 初恋が泣いている あいみょん
  75. 75 Bittersweet 川津明日香/内藤秀一郎/山口貴也/青木瞭
  76. 76 好好说话 刘惜君
  77. 77 时空 萨顶顶
  78. 78 专属情调 段奥娟
  79. 79 暗恋 张靓颖
  80. 80 我不要熄灭在风中 新裤子
  81. 81 画心 李宗南/潘艺翔
风吹一夏 - DP龙猪/Swei水/Rays陈袁
00:00 / 00:00
播放错误:风吹一夏

Not available