上次写的新生儿重名查询写的比较差,这次希望能够直接用JS来请求没想到出现这种情况(@_@)
能修改referer的方法主要是根据浏览器的漏洞,比如IE
chrome的安全性很高,不过可以使用webrequest组件来修改,但这个是用于插件开发的。
总结几点js遇到的几点安全性问题
1.跨域:
不止体现在ajax上,就连iframe内部的html都无法使用外部的js解决即便是最新的html5
2.修改referer:
这个属于隐私伪装,w3c标准貌似限制修改request header,referer用于标记访问者来源信息,修改毕竟属于一种伪造
如果要修改referer ,只能使用服务器端的工具,比如php ,java node.js
常用的httpclient就可以设置referer,
这就比较难受了
还是换PHP吧?
首先用Python看看接口的可用性吧?
# 福彩双色球,3D,七乐彩开奖结果API包装
# Michael Jiang <sencom1997@outlook.com>
# 2019年7月18日14:38:22
import requests
import json
#三种彩票
types = ["ssq","3d","qlc"]
#API
url = "http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice"
#请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
'Host':'www.cwl.gov.cn',
'Referer':'http://www.cwl.gov.cn/kjxx/'
}
for tp in types:
payload = {
"name":tp,
"issueCount":1
}
r = requests.get(url, headers = headers, params = payload)
#print(r.text)
j = json.loads(r.text)
print("彩种:"+j['result'][0]['name'])
print("期数:"+j['result'][0]['code'])
print("日期:"+j['result'][0]['date'])
print("红球:"+j['result'][0]['red'])
print("蓝球:"+j['result'][0]['blue'])
print("销售额:"+j['result'][0]['sales'])
print("奖池:"+j['result'][0]['poolmoney'])
print("备注:"+j['result'][0]['content'])
print()
Python 3.7.1rc1 (v3.7.1rc1:2064bcf6ce, Sep 26 2018, 15:15:36) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
===================== RESTART: C:\wamp64\www\福彩\main.py =====================
彩种:双色球
期数:2019083
日期:2019-07-18(四)
红球:06,15,17,26,28,31
蓝球:03
销售额:329029762
奖池:926738145
备注:河北1注,江苏5注,浙江1注,安徽1注,贵州2注,共10注。
彩种:3D
期数:2019193
日期:2019-07-19(五)
红球:9,4,3
蓝球:
销售额:51404180
奖池:26589325
备注:
彩种:七乐彩
期数:2019083
日期:2019-07-19(五)
红球:01,09,15,24,27,28,29
蓝球:14
销售额:10540558
奖池:0
备注:河北1注,浙江1注,安徽1注,共3注。
>>>
还行。
index.php
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>福彩开奖</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--移动设备适应屏幕-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>
<h1><img src="img/n_logo.png" alt="" class="img-circle" />福彩开奖<small>sencom1997@outlook.com</small></h1>
<table class="table table-striped">
<tr>
<th>彩种</th>
<th>期数</th>
<th>日期</th>
<th>红球</th>
<th>蓝球</th>
<th>销售额</th>
<th>奖池</th>
<th>中奖情况</th>
</tr>
<?php
$types = array(
"ssq",
"3d",
"qlc"
);
$row_url = "http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice";
foreach($types as $v){
$url = $row_url;
$get_data = array (
"name" => $v,
"issueCount" => 1
);
foreach ($get_data as $k => $v) {
$data[] = $k.'='.$v;
}
$p_str = implode('&', $data);
$url .= '?'.$p_str;
$data = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Referer : http://www.cwl.gov.cn/kjxx/',
'Host : www.cwl.gov.cn'
));
$output = curl_exec($ch);
curl_close($ch);
$output_array = json_decode($output,true);
echo "<tr><td>".$output_array['result'][0]['name']."</td><td>".$output_array['result'][0]['code']."</td><td>".$output_array['result'][0]['date']."</td><td>".$output_array['result'][0]['red']."</td><td>".$output_array['result'][0]['blue']."</td><td>".$output_array['result'][0]['sales']."</td><td>".$output_array['result'][0]['poolmoney']."</td><td>".$output_array['result'][0]['content']."</td></tr>";
}
?>
</table>
</html>
这次用php的curl来请求蛤是可以的!