• 全都有综合资源网

    分享赚钱

    一个专业的免费资源网

    每天更新100+优质资源

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方微信群

文章网址收录检测API接口 | 百度收录检测API |附源代码

技术文章 每日更新
2024-8-16 21:30 86人浏览 0人回复
原作者: 全都有综合资源网 来自: 全都有综合资源网 收藏 分享 邀请
摘要

之所以要做这个API,因为我的博客有百度收录检测,但是速度有点慢。后来觉得可能是因为服务器在国外,就有了把API搬到国内的想法。 但是国内的 API 已经在 Python 中构建了一个随机图服务,添加一个 PHP 不好吗?让 ...

  之所以要做这个API,由于我的博客有百度收录检测,可是速度有点慢。后来感觉能够是由于办事器在国外,就有了把API搬到国内的想法。
可是国内的 API 已经在 Python 中构建了一个随机图办事,增加一个 PHP 欠好吗?让我们重写一个 API 我们有了这个项目。代码已经在 GitHub 上了,所以虽然分享吧。
查询次数过于频仍有大要率会查询自己失利,今朝我们只是一个半制品,只合适企业自用
思绪
该检测方式的原始作者似乎是一个间接查询网址,然后婚配几多个搜索成果,假如搜索成果大于0则以为包括。但这类方式存在一个题目。百度偶然包括与方针网址无关的页面,是以测试并不正确。
我在网上搜索,其他一些文章在寻觅百度跳转链接,然后一个接一个地获得实在的链接,然后将它们与查询的 URL 相婚配,假如它们婚配,就意味着它们已经被包括在内。这是个好主张。理论上很是切确,可是有点耗时。归正这是个计划。先试试。
惋惜技术有限,百度跳转后没法获得实在链接,栈溢出上给出的一切处理计划都不起感化,这个计划失利了。
PS:记录下跳转后获得实在链接的几种方式,今后能够会用到。
layui-box layui-code-view" style="margin-top: 1.5em; margin-bottom: 1.5em; padding: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); overflow-wrap: break-word; box-sizing: border-box; position: relative; border: none rgb(222, 229, 231); background-color: rgb(245, 245, 245); overflow: hidden; line-height: 1.42857; word-break: break-all; border-radius: 0px; background-size: 30px, 30px; white-space: pre-wrap; font-size: 13px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(51, 51, 51);">

code

  1. # 方式一r = requests.get('http://techtv.mit.edu/videos/1585-music-session-02/download.source') 
  2. print(r.url) # http://d1baxxa0joomi3.cloudfront.net/2515a9db659b0ab26d869b4ff2dadca9/original.mov# 方式二:这类适用于屡次跳转response = requests.get(someurl)if response.history:
  3.     print("Request was redirected")    for resp in response.history:
  4.         print(resp.status_code, resp.url)
  5.     print("Final destination:")
  6.     print(response.status_code, response.url)else:
  7.     print("Request was not redirected")# 方式三r = requests.get('http://github.com/', allow_redirects=False)
  8. r.status_code  # 302r.url  # http://github.com, not https.r.headers['Location']  # https://github.com/ -- the redirect destination# 方式四import urllib.request
  9. res = urllib.request.urlopen(starturl)
  10. finalurl = res.geturl()
  11. print(finalurl)
分析
只能一步步分析了,首先看个已收录的文章:

文章网址收录检测API接口 | 百度收录检测API |附源代码4644 作者:全都有综合资本网 来历:全都有综合资本网 公布时候:2024-8-16 21:30


看看没有收录的文章:

文章网址收录检测API接口 | 百度收录检测API |附源代码6331 作者:全都有综合资本网 来历:全都有综合资本网 公布时候:2024-8-16 21:30

我有个主张。我刚刚剖析了 <b>url<b> 假如可以婚配已经包括的说明,不婚配则不包括。依照这些方式,代码的第一个版本很快就写好了。

code

  1. def get_baidu(url):
  2.     headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
  3.     }  
  4.     baidu = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd='
  5.     search_url = baidu + url
  6.     response = requests.get(search_url,headers=headers)
  7.     text = response.text    if 'http' in url:
  8.         url = url[url.index('//')+2:]
  9.     pattern=re.compile(r'<b>{}</b>'.format(url))
  10.     result_list = pattern.findall(text)    if result_list:        return 200
  11.     else:        return 403

随意测试了几篇文章,确切有用,可以收工了……且慢,再找找其他人的文章测试一下吧。

输入 http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html,嗯?怎样返回 403 了?用百度搜了一下,没错啊,已经收录了,而且搜索出来的成果也是加粗的。

文章网址收录检测API接口 | 百度收录检测API |附源代码2057 作者:全都有综合资本网 来历:全都有综合资本网 公布时候:2024-8-16 21:30

仔细看。哦…本来百度隐藏了一部分太长的网址,所以没法婚配。这个很难,确切可以截取一部分URL停止婚配,可是这个不正确。

仔细观察了一下,发现假如百度真的包括了这个网址,那末这个网址就会出现在搜索成果的顶部,在第一个和第二个搜索成果之间会出现一个“这里是包括... ... 的页面”的信息。所以我有了一个新的想法,首先,捕捉网页的文本从起头到“这是网页的内容...”然后利用正则表达式婚配百度跳转链接。假如你在百度找到了第一个婚配的搜索成果,那末这篇文章将会被包括在内。所以我写了代码的第二个版本。


code

  1. @app.get("/baidu/")async def get_baidu(u: str = Query(..., min_length=3)):
  2.     headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',        'Referer': 'https://www.baidu.com'
  3.     }    # 网址后缀处置
  4.     if '.' in u[-5:]:        pass
  5.     elif u[-1] != '/':
  6.         u += '/'
  7.     # 网址协议头处置
  8.     if ('http' in u) and not ('www' in u):
  9.         u = 'www.' + u[u.index('//')+2:]    elif ('http' not in u) and not ('www' in u):
  10.         u = 'www.' + u
  11.     baidu = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd='
  12.     search_url = baidu + u    try:
  13.         response = requests.get(search_url, headers=headers)
  14.         text = response.text
  15.         text = text[:text.index('以下是网页中包括')]
  16.         pattern = re.compile(r'"http://www.baidu.com/link\?url=.+?"')
  17.         result_list = pattern.findall(text)        if result_list:            return {'code': 200, 'msg': '该网址已被百度收录!'}        else:            return {'code': 403, 'msg': '该网址暂未被百度收录!'}    except:        return {'code': 404, 'msg': '百度收录查询失利!'}

嗯,很好,此次是真的就行了……(Flag 预定)。

PS:可以看到代码里有个网址的预处置,这是由于网址没有最初一个 / 时会查不出来,可是 .html 这类格式的又不需要加。别的,网址开首可以不带 http/https,可是必须带 www,要否则一样搜不出来。

跨域题目

测试没题目,那便可以上线了,摆设到办事器上,依照 https://www.sitstars.com/archives/65/中的教程点窜 API 地址,看下情况。题目又来了……

API 请求地址出现了一个鲜红的红色,提醒 strict-origin-when-cross-origin 毛病,看样子是跨域毛病?试着用毛病提醒 +fastapi 在 Google 上搜了一下,公然 fastapi 早已经斟酌到了这个题目,而且给出领会决计划。

参考材料:https://fastapi.tiangolo.com/tutorial/cors/

简单来说,加入以下代码便可以了:

code

  1. from fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddleware
  2. app = FastAPI()
  3. origins = [    "http://localhost.tiangolo.com",    "https://localhost.tiangolo.com",    "http://localhost",    "http://localhost:8080",    "*"]
  4. app.add_middleware(
  5.     CORSMiddleware,
  6.     allow_origins=origins,
  7.     allow_credentials=True,
  8.     allow_methods=["*"],
  9.     allow_headers=["*"],
  10. )

origins 是一个一切答应的请求域列表,加入 * 代表答应一切请求,固然也可以加入具体的网址和端口,比如上面几个例子。

加好后再测试一下,成功显现!而且速度还挺快。

百度本身题目

就在革新网站看结果的时辰,悲剧了。网页上忽然提醒我百度搜索失利!这是为什么呢?我手动试过API,成果输出不了,可是当地用没题目。ip被百度黑是由于我搜索太频仍吗?因而我找了很多处理方式,比如headers加更多参数,改代理ip,完全没用!

我检察了作者的博客,留意到在 PHP API 代码中有一个 CURLOPT,百度立即留意到该函数用于跟踪 URL 重定向。呃..?有没有能够是办事器搜索速度太快致使百度没有对重定向做出反应。是以,我利用了第二部分 print ()中的代码来获得最初一次跳转的 URL,并检察它将我引向何处。

点窜完代码重新摆设,没想到此次API又有用了。似乎是痉挛的题目。我革新了几次都没结果。这时辰办事器的控制台上也刷到了重定向的网址,就像我拼接的百度查询网址一样!什么情况?我自己对收集领会很少,所以最初也没有处理的法子。我只是晓得另一种判定百度查询失利的方式:只要有重定向,就一定会失利。








©版权免责声明
1、本站所有资源均来自用户上传及互联网。 如有侵权,请联系站长!
2、分享目的仅供大家学习交流。 下载后必须在24小时内删除!
3、不得用于非法商业目的或违反国家法律。 否则,后果自负!
4、本站提供的源代码、模板、插件等资源不包含技术服务。 敬请谅解!
5.如果出现无法下载、无效或有广告的链接,请联系管理员寻求帮助!
6、本站资源价格仅用于赞助,所收取的费用仅用于维持本站日常运营!
7、如果遇到加密压缩包,请使用WINRAR解压。 如果遇到无法解压的加密压缩包,请联系管理员!
8、由于精力有限,很多源代码无法详细测试(解密),部分源代码无法区分为病毒或误报,所以没有进行修改。 请在使用前进行筛选。

路过

雷人

握手

鲜花

鸡蛋
热门教程
专业的免费源码资源分享平台
每天更新100+资源

招募版主发工资

  • 官方在线客服

    QQ客服:红颜

    点击交谈

    在线客服:良子

    点击交谈

    在线客服:闵月

    点击交谈
  • 上海市虹口区海伦中心B座4F4055-4056室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信公众号

    加入官方微信

一个专业的免费源码资源互联网分享平台 ©2001-2024 https://www.douyouvip.com全都有综合资源网( 豫ICP备2024057239号-1 )赞助会员|网站地图 HTML
全都有综合资源网,WordPress主题PHP源码,PHP网站源码,网站模板,软件源码,网站源码免费下载,免费网站源码,网站源码模板,免费网站源码下载,wp免费源码,wp免费主题下载,PHP企业网站源码,软件源码下载