url match

正则表达式解析视频链接
videoUrlMatch = re.search(r"Real URLs:\s*(?P<videoUrls>.*){}".format(os.linesep), parseResult, re.DOTALL | re.IGNORECASE).group('videoUrls').split()  # 搜寻链接,因为有了download-url:,所以必须从Real URLs:后面搜寻
            # print(re.search(r"Real URLs:\s*(?P<videoUrls>.*){}".format(os.linesep), parseResult, re.DOTALL | re.IGNORECASE).group('videoUrls'),videoUrlMatch)
        

videoUrlMatch = re.findall(r'''Real URLs?:\s*[\[']*(?P<videoUrls>http.*?)['\]]*\s+''', parseResult, re.IGNORECASE)



videoUrlMatch = re.findall(r'''Real URLs?:#you-get解析爱奇艺显示Real URL,解析搜狐显示Real URLs,ykdl则是Real urls
                                    \s*#匹配换行和空格
                                    [\[']*#匹配you-get解析爱课程、爱奇艺的字符化列表左边[',用括号([')*的话findall会得出不相干的结果,故而不用
                                    (?P<videoUrls>http.*?)#匹配url,非贪婪模式以便不匹配出多余空格和不匹配结尾的字符化列表右边']
                                    ['\]]*#匹配you-get解析爱课程、爱奇艺的字符化列表右边']
                                    \s+''', #url的结尾都是换行,必须有
                                    parseResult, re.IGNORECASE| re.VERBOSE)  # 搜寻链接,因为有了download-url:,所以必须从Real URLs:后面搜寻



>>> re.findall(r'''Real URLs?:\s*[\[']*(?P<videoUrls>http://\S*)['\]]*''', parseResult, re.IGNORECASE|re.DOTALL)
['http://39.130.134.23:80/199/2/78/letv-uts/14/ver_00_22-1053883476-avc-2999799-aac-128000-2820200-1106779568-60506e98dba03609f162c0a1319f8365-1467722446828_mp4/ver_00_22_0_0_1_518316_0_0.ts?mltag=100&platid=1&splatid=101&playid=0&geo=CN-25-353-4&tag=letv&ch=&p1=&p2=&p3=&tss=ios&b=3139&bf=52&nlh=4096&path=&sign=letv&proxy=3702879625,1728279117,3719677991&uuid=&ntm=1491493200&keyitem=GOw_33YJAAbXYE-cnQwpfLlv_b2zAkYctFVqe5bsXQpaGNn3T1-vhw..&its=0&nkey2=8df56d0d2d11ae422e5abf18d684822f&uid=1971868906.rp&qos=3&enckit=&m3v=1&token=&vid=&liveid=&station=&app_name=&app_ver=&fcheck=0&pantm=&panuid=&pantoken=&cips=117.136.84.234&vod_live_path=&ledituid=&leditcid=&leditcip=&leditfl=&leditafl=&ajax=&lsbv=']
>>> 

对于多行url只能match Real URL后面第一个,所以后面采用了去掉Real URL的match regex

### IIS ARR 中 Match URL 规则的使用方法及示例 在 IIS 管理器中配置 ARR 时,URL Rewrite 模块的 `match url` 规则是关键部分。以下是关于如何正确配置和使用 `match url` 的详细说明和示例。 #### 配置规则的基本结构 URL Rewrite 规则的核心是一个 XML 节点,其中包含 `<match>` 和 `<action>` 元素。`<match>` 元素用于定义需要匹配的 URL 模式,而 `<action>` 元素则指定匹配后的操作[^1]。 ```xml <rule name="ReverseProxyInboundRule" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://backendserver/{R:1}" /> </rule> ``` 上述规则将所有请求(通过正则表达式 `(.*)` 匹配任意路径)重写并转发到后端服务器 `http://backendserver/`。 #### 使用正则表达式的高级匹配 如果需要更复杂的匹配条件,可以使用正则表达式来定义 `url` 属性。例如,仅匹配特定路径下的请求: ```xml <rule name="MatchSpecificPath" stopProcessing="true"> <match url="^api/(.*)" /> <action type="Rewrite" url="http://backendserver/api/{R:1}" /> </rule> ``` 在此示例中,`^api/(.*)` 表示匹配以 `/api/` 开头的所有路径,并将这些请求转发到后端服务器的 `/api/` 路径下[^2]。 #### 添加条件以增强匹配逻辑 除了 `<match>` 元素外,还可以通过 `<conditions>` 节点添加额外的匹配条件。例如,仅当请求头中包含特定字段时才进行转发: ```xml <rule name="ForwardWithCondition" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_X_Forwarded_For}" pattern=".+" /> </conditions> <action type="Rewrite" url="http://backendserver/{R:1}" /> </rule> ``` 此规则会检查请求头中是否存在 `X-Forwarded-For` 字段,如果存在,则将请求转发给后端服务器[^3]。 #### 示例:基于文件扩展名的匹配 以下规则仅匹配 `.php` 文件的请求,并将其转发到本地 PHP-FPM 服务: ```xml <rule name="PhpProxy" stopProcessing="true"> <match url="^(.+\.php)$" /> <action type="Rewrite" url="http://127.0.0.1:9000/{R:1}" /> </rule> ``` 此规则使用正则表达式 `^(.+\.php)$` 来匹配以 `.php` 结尾的文件名,并将这些请求转发到运行在 `127.0.0.1:9000` 的 PHP-FPM 服务[^4]。 #### 注意事项 - 确保正则表达式语法正确,否则可能导致规则无法正常工作。 - 在 `<match>` 元素中使用的捕获组(如 `{R:1}`)必须与正则表达式中的括号数量一致。 - 如果规则未按预期生效,请检查 IIS 日志文件以排查问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值