Ошибка 404 для определенных файлов на некоторых устройствах после повторных посещений.Apache

Ответить
Anonymous
 Ошибка 404 для определенных файлов на некоторых устройствах после повторных посещений.

Сообщение Anonymous »

Я запускаю веб-сервер в своей локальной сети, на котором размещается моя коллекция фильмов. У меня также есть специальное приложение для Android, работающее на Amazon Fire Stick. Недавно я работал над включением воспроизведения видео из внешних источников.
Приложение отправляет запросы на веб-сервер, например "(addr)/externalsearch.php?title=(movie)". Затем сайт вызывает веб-скребок Selenium Python и возвращает различную информацию в форме JSON. Все это прекрасно работает примерно 4 или 5 раз. После этого из приложения работают только запросы к чистым html-страницам. Все страницы php возвращают 404. Другие статические файлы, такие как «(addr)/catalog.json», также возвращают 404. Перезапуск системы дает вам еще 4 или 5 запросов, прежде чем снова сломаться.
При посещении тех же страниц на моем компьютере все они работают отлично, несмотря ни на что. Однако посещение страниц на моем iPhone приводит к тому же результату.
Ниже приведена одна из функций Kotlin, которая вызывает страницу, веб-страницу externalsearch.php и связанный с ней файл Python, при этом некоторые особенности скрыты.
функция Android

Код: Выделить всё

fun external(view : View)
{
val searchStringLower = searchString.lowercase()

CoroutineScope(Dispatchers.IO).launch {
var connection: HttpURLConnection? = null
try {
val urlString = "${MainActivity.settings.ip}/externalsearch.php?title=${URLEncoder.encode(searchStringLower, "UTF-8")}"
val url = URL(urlString)
connection = url.openConnection() as HttpURLConnection

connection.requestMethod = "GET"
connection.connectTimeout = 5000
connection.readTimeout = 15000

val responseCode = connection.responseCode
if (responseCode == HttpURLConnection.HTTP_OK) {
val response = connection.inputStream.bufferedReader().use { it.readText() }

val json = Json { ignoreUnknownKeys = true }
val results: List = json.decodeFromString(response)

lifecycleScope.launch(Dispatchers.Main) {
val adapter = ExternalItemAdapter(this@SearchActivity, results, 0)
searchGrid.adapter = adapter
}
} else {
println("Error: $responseCode")
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
connection?.disconnect()
}
}
}
externalsearch.php /Scripts/externalsearch.py

Код: Выделить всё

import sys
import json
import re

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.service import Service

from bs4 import BeautifulSoup
from threading import Lock

if len(sys.argv) < 2:
print(json.dumps({"error": "Missing title parameter"}))
sys.exit(1)

title = sys.argv[1]

url = f"(url)"

options = webdriver.FirefoxOptions()
options.add_argument("--headless")
service = Service('/usr/local/bin/geckodriver')
driver = webdriver.Firefox(service=service, options=options)
results = []

try:
driver.get(url)

html = driver.page_source
soup = BeautifulSoup(html, "html.parser")

...
Scraping code
...

except Exception as e:
print(json.dumps({"error": str(e)}))
finally:
driver.quit()

print(json.dumps(results))
Я не совсем уверен, какая часть стека виновата в этой проблеме, поэтому я не включил никаких журналов. Если вы считаете, что что-то еще будет полезно, дайте мне знать.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ted-visits
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»