澳大利亚https://www.amazon.com.au/
巴西https://www.amazon.com.br/
加拿大https://www.amazon.ca/
中国https://www.amazon.cn/
法国https://www.amazon.fr/
德国https://www.amazon.de/
印度https://www.amazon.in/
意大利https://www.amazon.it/
日本https://www.amazon.co.jp/
韩国https://www.amazon.co.kr/(无)
墨西哥https://www.amazon.com.mx/
荷兰https://www.amazon.nl/
波兰https://www.amazon.pl/
比利时https://www.amazon.com.be/
沙特阿拉伯https://www.amazon.sa/
新加坡https://www.amazon.com.sg/
西班牙https://www.amazon.es/
瑞典https://www.amazon.se/
台湾https://www.amazon.com.tw/(无)
泰国https://www.amazon.co.th/(无)
土耳其https://www.amazon.com.tr/
阿拉伯联合酋长国https://www.amazon.ae/
英国https://www.amazon.co.uk/
美国https://www.amazon.com/
越南https://www.amazon.vn/(无)
替代curl非常简洁明了的http请求库
替代curl非常简洁明了的http请求库
来源:https://gitee.com/brh/http
备注:作者已逝
<?php defined('SYSPATH') or die('No direct script access.');
/**
* Provides http server communication options using [Stream]
* Mainly used to communiate with http
* Add Support HTTP/1.1 by Default
* Only Support Connection Close Mode
*
* @author anthony Chen
*/
class Http {
public static $allow_self_signed = true;
public static $non_blocking = false;
/**
* @var array default header options
*/
public static $default_options = array (
'User-Agent'=> 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit /538.36 (KHTML, like Gecko) Pexcel/6.998',
'Connection'=> 'Close' //Need to close the request every time for HTTP 1.1
);
/**
* return Array lines of headers
* Overwrite by $options
*
* @param Array $options, key value pairs of Header options
*
* @return Array,Array line of headers
*/
private static function getHeaders($options){
if ($options === NULL) {
// Use default options
$options = self::$default_options;
} else {
//Merge the $options with $default_options, if the value set in $options,
//Value in $default_options will be overwrite
$options =$options + self::$default_options ;
}
$headers = array();
foreach($options as $k=>$v){
$headers[] = $k.': '.$v;
}
return $headers;
}
/**
* Returns the output of a http URL.
* may be used.
*
* @param string http base URL or FULL url
* @param array Header options
* @param array $data Get Param
* @param array &$rr_headers,Request Response headers
* if Assigned,the response header will be populated
* If ['fingerprint'] is set, then finger is checked in SSL Context
* If ['ignore_errors'] is set, then ignore http error code other than 200
*
* @return string, Raw String of Http body
*/
public static function get($url, array $options = NULL,$data = NULL,&$rr_headers = NULL) {
$headers = self::getHeaders($options);
$params = ['http' => [
'method' => 'GET',
//Defautl HTTP 1.1 and with Connection Close
'protocol_version'=>'1.1',
//'Connection'=> 'Close' //Need to close the request every time for HTTP 1.1
]];
if(Arr::get($rr_headers,'ignore_errors') == true){
$params['http']['ignore_errors'] = true;
}
$params['http']['header'] = $headers;
if($data){
$url .= '?'.http_build_query($data);
}
$ctx = stream_context_create($params);
if(self::$allow_self_signed == true){
stream_context_set_option($ctx,["ssl"=>["allow_self_signed"=>true,"verify_peer_name"=>false,"verify_peer"=>false]]);
$_finger = Arr::get($rr_headers,'fingerprint');
if($_finger){
stream_context_set_option($ctx,["ssl"=>["peer_fingerprint"=>$_finger]]);
}
}
$fp = fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Connection failed: $url");
}
if(self::$non_blocking == TRUE){
stream_set_blocking($fp,0);
}
if($rr_headers !== NULL){
$rr_headers = stream_get_meta_data($fp);
}
$response = stream_get_contents($fp);
if ($response === false) {
throw new Exception("Reading data Failed: $url");
}
fclose($fp);
return $response;
}
/**
* Post with request options and data
*
* @param String url, FULL url
* @param Array $options , key=>value pairs array
* @param Array $data ,Post Data pairs
* @param array &$rr_headers,Request Response headers
* if Assigned,the response header will be populated
* If ['fingerprint'] is set, then finger is checked in SSL Context
* If ['ignore_errors'] is set, then ignore http error code other than 200
* @return string, Raw String of Http body
*/
public static function post($url, $options = null,$data=NULL,&$rr_headers = NULL) {
//Restricted the Form formate
if(is_array($data)){
$data = http_build_query($data);
}
$options['Content-type'] = Arr::get($options,'Content-type','application/x-www-form-urlencoded');
$options['Content-Length'] =Arr::get($options,'Content-Length',strlen($data));
$params = ['http' => [
'method' => 'POST',
'protocol_version'=>'1.1',
//'Connection'=> 'Close', //Need to close the request every time for HTTP 1.1
//'ignore_errors'=>true,
'content' => $data
]];
if(Arr::get($rr_headers,'ignore_errors') == true){
$params['http']['ignore_errors'] = true;
}
$headers = self::getHeaders($options);
$params['http']['header'] = $headers;
$ctx = stream_context_create($params);
if(self::$allow_self_signed == true){
stream_context_set_option($ctx,["ssl"=>["allow_self_signed"=>true,"verify_peer_name"=>false,"verify_peer"=>false]]);
$_finger = Arr::get($rr_headers,'fingerprint');
if($_finger){
stream_context_set_option($ctx,["ssl"=>["peer_fingerprint"=>$_finger]]);
}
}
$fp = fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Connection Failed: $url ");
}
if(self::$non_blocking == TRUE){
stream_set_blocking($fp,0);
}
if($rr_headers !== NULL){
$rr_headers = stream_get_meta_data($fp);
}
$response = stream_get_contents($fp);
if ($response === false) {
throw new Exception("Reading data failed: $url");
}
fclose($fp);
return $response;
}
/**
* Inflate zipped content
*
* @param String $_content, gzipped content
*
* @return String, Inflated content
*/
public static function inflate($_content){
//deflate add 10 charaters before inflate format and 8 charaters checksum append
//gzdecode is not availible for ALL PHP even gzencode is avalible
$_content = substr($_content, 10,-8);
return gzinflate($_content);
}
/**
* Check if the reponse content is zipped from response header
*
* @param Array $_response_header, Response header captured from get/post
*
* @return Boolean, True for zipped contented
*/
public static function isZipped($_response_header){
if (preg_grep('/^Content-Encoding:\s*gzip/i',$_response_header['wrapper_data'])){
return TRUE;
}else{
return False;
}
}
/**
* Parse response headers into K V data
*
* @param Array $headers, wrapper data return from http request
*
* @return Array , the parsed headers of http
*/
public static function parseHeaders( $_response_header ) {
$headers = Arr::get($_response_header,'wrapper_data',[]);
$head = array();
foreach( $headers as $k=>$v )
{
$t = explode( ':', $v, 2 );
if( isset( $t[1] ) )
$head[ trim($t[0]) ] = trim( $t[1] );
else
{
$head[] = $v;
if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
$head['reponse_code'] = intval($out[1]);
}
}
return $head;
}
} // End http
Scribus开源电子杂志制作软件
Scribus 适用于Linux,FreeBSD,PC-BSD,NetBSD,OpenBSD,Solaris,OpenIndiana,Debian GNU/Hurd,Mac OS X,OS/2 Warp 4,eComStation,Haiku和Windows的页面布局程序。
Scribus 是一款类似 Adobe Pagemaker 的开源电子杂志制作软件,可以用来制作个人文件、邮件列表、电子杂志类型的电子文档。它体积很小,可以放在 U 盘里,只需插入相应的电脑就可以使用。
官网:https://www.scribus.net/
下载:https://sourceforge.net/projects/scribus/files/scribus/
Scribus安装后,默认支持中文。
Krita官方推荐创建PDF软件。
Krita 可以打开包含多个图层的 PDF 文件。但 Krita 目前不支持导出为 PDF,也没有实现 PDF 导出功能的计划。如需使用 Krita 输出的图像创建PDF,请使用 Scribus 。
Blender免费开源三维图形图像软件
Blender是一款免费开源三维图形图像软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。Blender拥有方便在不同工作下使用的多种用户界面,内置绿屏抠像、摄像机反向跟踪、遮罩处理、后期结点合成等高级影视解决方案。
官网:https://www.blender.org/
IBM Security AppScan Standard 9.0 安装包附注册文件
IBM Security AppScan Standard 9.0 安装包附注册文件
网盘下载:(访问密码wdja)
http://share.menglei.net/f/16922972-730406259-f7e140
备注:因IBM Rational AppScan 8.0中的CA证书过期,无法扫描https网址,以下内容仅供参考。
IBM Rational AppScan 8.0安装包附注册文件
网盘下载:(访问密码wdja)
http://share.menglei.net/f/16922972-729653340-02f4ae
另提供IBM Security AppScan Standard V8.7 注册文件
网盘下载:(访问密码wdja)
http://share.menglei.net/f/16922972-729652899-824d80
AppScan是IBM公司开发的一款安全扫描软件
Web服务扫描是Appscan中具有有效自动化支持的一个扫描功能。
VSO Downloader 5 安装包附注册文件
VSO Downloader 5 安装包附注册文件
网盘下载:(访问密码wdja)
http://share.menglei.net/f/16922972-729549519-a1c69d
1.先运行VSO Downloader Ultimate 5.0.1.61.exe安装原版
2.安装完成不要运行
3.破解方法
解压VsoDownloader.exe到VSO Downloader 5 安装目录 直接覆盖
或者
解压Patch.exe到VSO Downloader 5 安装目录
运行Patch.exe
点击PATCH按钮
VSO Downloader 目前所支持的网站有 优酷、新浪、腾讯视频, 迅雷看看 (均已测试) 等等并自动拦截其中的广告视频。
同时,VSO Downloader 也通杀所有主流的音频网站,如 豆瓣FM,百度MP3、虾米音乐 等等。目前其所支持的文档格式 FLV,,MP4,WMV ASF,MP3,SWF ……. 总之,简约大气上档次,绝对满足日常使用。
hugin跨平台开源全景摄影图像拼接软件
hugin 是一款由 Pablo d'Angelo 为主开发的跨平台开源全景摄影图像拼接软件。
支持简体中文。
开源地址:https://sourceforge.net/projects/hugin/
PhotoDemon免费图片编辑器
官网:https://photodemon.org/
PhotoDemon是一个便携式的照片编辑器。它是100%免费和100%开源的。
该应用程序在非常小的下载中提供了全面的照片编辑工具选择。它可以在任何Windows机器(XP到Windows 11)上运行,作为便携式应用程序,您可以在USB驱动器或SD卡上随身携带。它永远不需要安装,也不需要管理员访问权限即可运行。
Krita 自由开源的免费绘画软件
官网:https://krita.org/
Krita 是一款自由开源的免费绘画软件。它无需注册、没有内购、广告、试用期或者商用限制,让画师可以有尊严地表达创意。支持 Windows、macOS、Linux 和安卓平板。
Krita 能够打开 PSD 格式的图像,甚至能打开连 Photoshop 也拒绝打开的 PSD 文件。如果需要在别的程序里编辑图像,Krita 也可以将其保存为 PSD 格式。支持 PS 图层样式。
GIMP免费和开源图像编辑器
官网:https://www.gimp.org/
GIMP是一个跨平台的图像编辑器,可用于GNU/Linux, macOS,Windows和更多操作系统。它是免费的 软件,您可以更改其源代码并分发更改。
无论您是平面设计师、摄影师、插画家还是 科学家,GIMP为您提供复杂的工具来获得工作 做。您可以使用 GIMP 进一步提高您的生产力,这要归功于 许多自定义选项和第三方插件。