碰着了抓取优酷评论的一个小任务
本来以为会很随意马虎的处理掉的,然落后程中创造了优酷对付加载评论的连接有一个通过韶光加密的sgin
一样平常碰着这种情形我们可以通过自定义脚本将加密过程的js过程翻译成php脚本实行
这里不先容详细的解密过程,说一下碰着的问题
浏览器调用加密的过程利用的是js脚本
就在这里碰着了一个问题,或者说的js中的坑,那便是js在做<<运算的时候是32位,而现在大多是都是64位的情形,这就会发生js运算会溢出的,而我们自己写的php脚本不会溢出,这样就会涌现加密缺点的情形
具体例子:
Java:
import java.io.;
class test
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println(549404385<<12);
//结果-202502144
}
}
PHP:
<?php
echo 549404385<<12;
//结果2250360360960
exit();
?>
看着结果全体人都不好了,第一次碰着用这种坑做加密的。。。
不过碰着了就要办理
这里写了一个函数办理这个问题,大致思路便是在左位移运算的时候先位移,然后剖断是否溢出,溢出的话截取末了32位作为结果,然后对付结果做包含符号的编码转换
function lin64to32($a,$b)
{
$s=$a<<$b;
$ss=decbin($s);
if(strlen($ss)>=32)
{
$sss = substr($ss, -32);
if(substr( $sss, 0 , 1 )==1)
{
$num = bindec($sss)-1;
$format = '%0' . (PHP_INT_SIZE 8) . 'b';
$bin = substr(sprintf($format, ~$num),-32);
return -bindec($bin);
}
else
{
$sss = substr($ss, -32);
return bindec($sss);
}
}
else
{
return bindec($ss);
}
}
发源地作为海内首个基于自研SaaS引擎的互联网大数据交易平台,通过众包UGC模式采集/接入数据源,进行洗濯、过滤、脱敏处理后再交易,知足企业对数据剖析、启动/运营数据及精准营销等方面的需求。