2009-09-19 2 views
0

Это немного сложный вопрос и немного трудно объяснить.PHP curl posting to aspx page вызывает 500 ошибок сервера

У нас есть сценарий для автоматического входа в систему и сбора информации с одного сайта на основе asp.net, скрипт находится на PHP с использованием curl. Мы тестировали скрипт, и он работает 20-30% времени, что означает, что скрипт завершен и работает. Но остальное время, когда он терпит неудачу, поскольку сервер дает 500 Internal Server error, когда мы публикуем данные для входа.

Тот же скрипт и те же детали иногда работают и не работают, может ли кто-нибудь сказать мне, что может быть причиной подобных проблем?

Что мы должны проверить? Мы установили все файлы cookie, viewstate, проверку событий и т. Д. Также попытался кодировать специальные символы в полях.

Спасибо заранее.

-happyhardik


Дополнения: - У нас нет доступа к серверу .Net - Мы давали один и тот же вход (данные входа) на сервер каждый раз .Net мы пытались - Сайт .Net работает в браузере каждый раз (почти 100%)

+1

Вы должны обязательно посмотреть журналы сервера, чтобы узнать причину ошибок 500. – Zed

+0

Извините, я не имею доступа к этому серверу ... :) – happyhardik

ответ

1

Либо приложение .NET сломано, либо ваш код.

Первое, что нужно сделать, это выяснить Fixin, что нужно в:

Strip ваш PHP код вниз к некоторому испытанию „самое необходимое“. То же (действительное) имя пользователя/пароль, каждый раз. Запустите его 20 раз или около того ...

Как часто это удается?

Если вы получаете шанс успеха 20-30%, то это проблема на стороне .NET. (Те же самые входы в эту систему дают разные результаты).

Если вы получаете 100% или 0% успеха, это, вероятно, что-то на вашей стороне (в некоторых случаях, вы отправляете плохие запросы)

Если у вас есть доступ к серверу .NET (или тех, кто поддерживайте его), посмотрите, что вызывает ошибку 500. Там где-то в их журналах должно быть какое-то необработанное исключение.

+0

У нас нет доступа к серверу .NET. Мы использовали одни и те же данные для входа, означает, что те же самые входы на сервер .Net создают разные результаты. Итак, проблема с сервером .Net, как я и думал, должна быть проблемой, но тот же сайт отлично работает в браузере со 100% коэффициентом успеха, означает, что в нашем запросе есть что-то не так. Я был в замешательстве. – happyhardik

0

Из моего опыта, если вы отправляете запросы слишком быстро, некоторые сайты будут пытаться замедлить работу с различными типами ошибок. Попробуйте поспать между запросами ur и посмотреть, поможет ли это.

0

Мы установили все файлы cookie, viewstate, проверку событий и т. Д. Также пытались кодировать специальные символы в полях сообщений.

Как вы узнали, что ваши файлы cookie и viewstate верны для машины, с которой вы отправляете запросы? Или что они верны для сервера, на который вы отправляете запросы?

ViewState - это кодированное представление ASP.NET страницы в то время, когда оно было отправлено в браузер, и закодировано на основе различных вещей, включая MachineKey сервера, хеш кода страницы и, возможно, MAC-адрес сервера - получить любой из этих неправильных для того, что похоже на обратную передачу, и сервер будет вызывать HttpException с сообщением «Invalid ViewState».

Существует множество других причин, по которым сервер может выдавать исключение для вас, начиная от других ошибок кода сайта, до того, что он слишком занят для обработки запросов, так как Sab suggests активно отклоняет ваши запросы , Лучше всего попробовать попробовать работать с владельцем сайта, чтобы придумать решение, с которым обе стороны могут работать, но я склонен предположить, что вы делаете своего рода полу-незаконное скринзинг экрана, который владельцы сайтов не будут довольны двумя, иначе они уже предоставили вам API.

+0

Привет, Мы публикуем значение viewstate, которое мы получаем с сервера при отправке формы входа. Да, мы делаем скриншоты экрана, но это не незаконно, поскольку у владельцев сайтов нет проблем с этим, ничего в их TOS, вы можете предположить, что у них нет персонала для разработки API, и они не согласны с решением проблемы с нами, поскольку он работает в браузере. – happyhardik

Смежные вопросы