cas post跳转错误问题,post验证后重定向为get

症状是get验证没问题,post的时候会回跳到带ticket的get地址,当然本地不支持get就产生错误了。

网上可能遇到的不多,有的回答比较坑,也可能跟我的不一致,比如
acceptAnyProxy true
redirectAfterValidation false
这个答案反正我这无效。

解决办法也比较简单,其实就是每个页面都需要带个ticket
post地址也需要,只要在表单action的地址中增加参数ticket就好了
比如原来post到 http://do.action 那么就改成 http://do.action?ticket=
就好了。

maven 提示 java.security.ProviderException: java.security.KeyException

提示如:

[ERROR] Plugin org.codehaus.mojo:build-helper-maven-plugin:1.9.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.mojo:build-helper-maven-plugin:jar:1.9.1: Could not transfer artifact org.codehaus.mojo:build-helper-maven-plugin:pom:1.9.1 from/to central (https://repo.maven.apache.org/maven2): java.security.ProviderException: java.security.KeyException -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

主要原因是因为源地址是https地址,然而当前系统版本比较老,不支持… 网上大多解决办法是做个代理或者用各种办法把https转成http.
也尝试用使用自安装的maven和把openjdk换成官方jdk然并卵.
最简单的办法就是更新下软件版本,我的是centos, yum update!
完美

spring mvc cannot reliably process ‘persist’ call

spring mvc cannot reliably process ‘persist’ call
spring mvc +jpa 出现了这个问题, 也根据网上加过 @PersistenceContext @Transactional 这些注解,都没啥效果.

我的解决方式, 根据配置文件
原来的
@Autowired
EntityManager entityManager;

改成了
@Autowired
private EntityManagerFactory entityManagerFactory;

之后使用的时候
entityManagerFactory.createEntityManager()
就成功了,但这种方法需要自己关闭下EntityManager

java 时区 CST

之前没关注过, 理解上系统时间是UTC+8,并且new Date()添加到数据库是对的就正常了。

但是:发现如果是录入时间 比如字符串 “2016-09-09 00:00:00” 那么转换成Date就变成了CST时间,这样再录入数据库就会错误。
会是 2016-09-09 00:00:00 CST

解决方法:修改数据库时区就好了

swagger+spring+junit冲突

swagger +spring+junit冲突
junit的测试跑不起来,主要原因是引用的注解造成的:

@Configuration
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages ={"xx"})
public class SwaggerConfig {
...
}

我的解决办法是把swaper配置文件分离出来,junit不调用.
原先配置文件只有默认的两个:
/WEB-INF/spring-servlet.xml
/WEB-INF/applicationContext.xml
修改后增加一个
/WEB-INF/spring-swagger.xml

并改成在web.xml导入配置文件

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/spring-servlet.xml
    /WEB-INF/applicationContext.xml
    /WEB-INF/spring-swagger.xml
  </param-value>
</context-param>

参考:http://stackoverflow.com/questions/7471544/unit-testing-spring-mvc-web-app-could-not-autowire-field-private-javax-servlet

编译安装php56 线程安全要加装pthread

wget http://cn2.php.net/get/php-5.6.22.tar.gz/from/this/mirror

tar zxvf php-5.6.22.tar.gz

cd php-5.6.22

./configure --prefix=/usr/local/php5622 --enable-maintainer-zts --with-config-file-path=/usr/local/php5622/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-opcache --enable-mbstring --enable-soap --enable-zip --enable-bcmath--with-openssl --with-zlib --with-curl --with-gd --with-zlib-dir=/usr/lib--with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib --with-mhash--with-apxs2=/usr/local/apache/bin/apxs

make
make install

添加软连接

添加 php-fpm用户
adduser php-fpm
groupadd www

php-fpm
复制默认配置文件
cp /usr/local/php5622/etc/php-fpm.conf.default /usr/local/php5622/etc/php-fpm.conf

cp /usr/local/src/php-5.6.22/php.ini-production /usr/local/php5622/etc/php.ini

增加启动脚本
http://coder.weisiliang.com/co_index.action?coid=38

增加memcache支持

http://pecl.php.net/package/memcache
wget http://pecl.php.net/get/memcache-3.0.8.tgz
tar zxvf memcache-3.0.8.tgz
cd memcache-3.0.8
phpize56
./configure --with-php-config=/usr/local/php5622/bin/php-config
make
make install

libmemcached
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached
make
make install

memcached php ext
wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize56
./configure --with-php-config=/usr/local/php5622/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make
make install

pthread 安装

centos php5.6是yum安装的
pthread2.x支持php5
3.x支持php7
下载:
wget http://pecl.php.net/get/pthreads-2.0.10.tgz

tar zxvf pthreads-2.0.10.tgz

cd pthreads-2.0.10

安装phpize

yum install php56-php-devel

默认没加关联,需要增加快捷方式

ln -s /opt/remi/php56/root/usr/bin/phpize /usr/bin/phpize
ln -s /opt/remi/php56/root/usr/bin/php-config /usr/bin/php-config

phpize

编译

./configure --with-php-config=/usr/bin/php-config

提示:
checking checking for ZTS… configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled

我擦,我找的3方源php56是非线程安全的….擦擦擦

重新编译安装后
#编译安装php关联

ln -s /usr/local/php5622/bin/phpize /usr/bin/phpize56

./configure --with-php-config=/usr/local/php5622/bin/php-config

make
make install

php.ini中增加
extension=pthreads.so

php56 -i |grep pthreads -A 5

成功打印pthread 版本

视频网站真实下载地址解析

不贴具体代码了,解析了youku,bilibili,sohu,iqiyi每家的策略都不一样,还都挺奇妙的。

有点解密的感觉,不写代码,只指明方向

首先需要chrome和firefox。chrome看请求比较方便,也方便搜索,而firebug比较适合javascript调试,我用chrome调js不习惯。
我需要下载的是mp4地址,需要把user-agent修改成android

1,解析youku,:
网站通常会通过一个jsonp来返回下载真实地址,问题是如何获得正确的参数
分析后发现youku返回的jsonp中除了真实mp4啥都有,就是下载地址
分析发现,js中一个函数jsonbuildfun,参数设置为返回的jsonp后就能生成真是地址对象了。

我是把页面中这两个js合并改写了下,可以用nodejs直接调用,

还有个坑,生成好的下载地址很有可能用不了!!
解决方法就是需要细致的完全模拟浏览器:
发现请求jsonp的时候需要设置cookie
Cookie:’ykss=; __ysuid=;’
一开始还研究半天这俩参数怎么生成, 原来不需要, 随便写,只要有就行。
妥妥的。

难度4分吧,主要是需要运行页面js

2,解析bilibili
这个最容易,分析请求资源发现
http://www.bilibili.com/m/html5?aid=xxx&page=xx
ua都不用改

难度1分,基本就是白送的

3,sohu
不得不说sohu隐藏的最深,也最鸡贼。
通过jsonp拿到下载地址后,发现除非通过原来网站访问,否则获得的下载地址失效。
分析js画了很长时间,一个一个的过滤,开始是以为生成参数不对,或者消息头有问题。
结果发现有个pv.png,我擦,这真心不是个统计程序,
jsonp中返回消息头有个setcookie
然后在pv.png请求头中,设置这个cookie,原来的下载地址就被激活了。

难度4分吧,不需要改什么js,就是这个机制心急很重。

4,iqiyi

iqiyi是最牛的,
获取jsonp的地址有个src和sc参数
生成算法是扰码加密并且写在页面中的,搜索的话根本搜不到。
而且这个算法大量使用了浏览器参数当变量生成的条件。扰码后反正我是没看明白

如果使用nodejs运行改写以后虽然格式合法,能拿到mp4地址但是不能播。
最后只能使用htmlutil,java实现。

htmlutil也很适合解youku
加载html后就能直接通过命令获得js对象。所有数据基本就是白给了。

难度给5.5分,除非能分析扰码过的好几千行代码,否则改js算法基本没戏。
只能变通下换个工具