| 68 | return |
| 69 | |
| 70 | def node_String(self, context): |
| 71 | if not URL_REGEX.match(context.node.value): |
| 72 | return |
| 73 | |
| 74 | try: |
| 75 | parsed = urlparse(context.node.value) |
| 76 | except ValueError: |
| 77 | return |
| 78 | |
| 79 | if not parsed.query: |
| 80 | return |
| 81 | |
| 82 | qs = parse_qs(parsed.query) |
| 83 | for k, v in qs.items(): |
| 84 | if not SECRET_REGEX.match(k): |
| 85 | continue |
| 86 | if len(v) == 1: |
| 87 | v = v[0] |
| 88 | if not TOKEN_FILTER_REGEX.match(v): |
| 89 | return |
| 90 | |
| 91 | yield from self._gen_hit(context, name=k, secret=v, type="url") |
| 92 | |
| 93 | def node_Compare(self, context): |
| 94 | if not len(context.node.ops) == 1: |